출처: 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 |