본문 바로가기

언어/C#

[JSON] Newtonsoft.Json 을 이용한 json 문자 파싱

출처: http://alpha-i.tistory.com/21


요즘은 데이터 저장 방식을 XML 보다 json 을 더 많이 쓰는걸로 알고있는데요, 직접 split 이나 정규식을 사용하여 json 데이터를 파싱하는건 정말정말 귀찮아서 훨신 편한 라이브러리를 사용합니다.

Newtonsoft.Json 은 NuGet 에서 Newton 만 쳐도 나옵니다. 혹은 첨부파일 참조해주시고 Newtonsoft.Json.Linq 도 참조해주시고 ( using Newtonsoft.Json.Linq; )


string json = @" { "car" : { "Name" : "Sonata" } , "test" : "abc" } " //json 문자열

JObject jobj = JObject.Parse(json); //문자를 객체화


이렇게하면 파싱 끝입니다. 사용방법은

MessageBox.Show(jobj["test"].ToString());

"test" : "abc" 이므로 출력값은 "abc" 입니다.


json 에서 "car" : { "Name" : "Sonata" } " 와 같이 car 의 값이 오브젝트라도 그냥

jobj["car"]["Name"].ToString()

하면 car 의 Name 인 "Sonata" 가 반환됩니다


그럼 json 에서 배열일때는 어떻하냐..

string json = @"[ "dog" , "cat" , "horse" ]"

JArray jarr = JArray.Parse(json)

JObject 를 JArray 로 바꿔주기만 하면 파싱됩니다.


일반 배열이랑 비슷하게 사용하면 되요

foreach(JObject jobj in jarr)

{

MessageBox.Show(jobj.ToString());

}


마지막으로 이것들을 응용해서 BukkitAPI 를 파싱해 보겠습니다


using Newtonsoft.Json.Linq;

using System.Net;


참조해주시고


using (WebClient wc = new WebClient())

{

     string json = wc.DownloadString("http://ksi123456ab.dothome.co.kr/API/Plugin.json"); //API 사이트에서 json 받아옴

     JArray jarr = JArray.Parse(json); //json 객체로

     foreach(JObject jobj in jarr)

     {

     MessageBox.Show(jobj["name"].ToString() + " , 버전 : " + jobj["version"].ToString() + "₩n" + jobj["url"].ToString()); //플러그인명,버전,url 출력

     }

}


결과

플러그인명 , 버전 : x.x.x

http://○○○.○○○○○.○○○

'언어 > C#' 카테고리의 다른 글

LINQ 집계함수(Sum,MAX,MIN,Average,count,Aggregate 등)  (0) 2020.05.24
Newtonsoft.Json 사용법  (0) 2018.04.07
Image to Byte Array C#  (0) 2018.03.26
NLog.Windows.Forms  (0) 2018.03.22
Rich text box appender  (0) 2018.03.20