ksi123456ab
ksi123456ab
ksi123456ab
  • 분류 전체보기 (23)
    • 프로젝트 (3)
    • 소식 (0)
    • C# (12)
    • JS (0)
    • 기타 (4)
    • 프로그래밍 (0)
    • 리눅스 (1)
    • 잡담 (0)
    • 공지 (1)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
ksi123456ab

ksi123456ab

C#

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

2017. 6. 4. 10:59

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


Newtonsoft.Json.dll



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#' 카테고리의 다른 글
    • [C# 강좌] 삼항 연산자
    • [C# , VB.NET] 투명 스플레쉬 이미지 띄우기
    • [C# 강좌] DLL 동적 로드하기
    • C#강좌 - 변수의 계산,변환
    ksi123456ab
    ksi123456ab
    프로그래밍

    티스토리툴바