이번 포스팅에서는 Json 데이터를 자신의 임의 객체 혹은 변수로 파싱하는 방법에 대해 알아 보겠습니다.
JavaScriptSerializer, Json .NET 을 사용하여 Json String 을 객체로 직렬화 하거나 역직렬화 하는 경우
Json 에 포함된 객체명의 이름을 임의적으로 바꿔줄수 없다는 단점이 존재합니다.
만약, Json 데이터에 포함된 객체명이 대문자로 시작하거나 _(언더바) 로 시작하는 경우
자바나 혹은 C# 에서 네이밍 룰에 어긋나기 때문에 개발자가 임의로 객체명을 바꿔서 저장해야 하는 경우가 생깁니다.
이제 객체명을 내 임의대로 해서 파싱 받는 방법에 대해 소개 하겠습니다.
필요한 어셈블리는 Newtonsoft.Json 일명 Json .NET 입니다.
ASP. NET 부터는 참조에 이미 추가 되어있으므로, C# 에서는 Nuget 을 사용하여 해당 어셈블리를 참조하도록 합니다.
이번 포스팅에서 사용될 Json 데이터 입니다.
static void Main(string[] args) { WebClient client = new WebClient(); // 웹 URL을 통해 String 데이터로 반환 string jsonStr = client.DownloadString("http://graph.facebook.com/353497304778969"); // Json String to Object 로 반환 JObject jo = JObject.Parse(jsonStr); long id = (long)jo["id"]; string about = (string)jo["about"]; // cover 는 Object 이므로 Object 로 반환 JObject cover = (JObject)jo["cover"]; string str = (string)cover["source"]; System.Console.WriteLine(about); }
소스코드를 살펴보면 jsonStr 객체에 웹 URL 로 부터 Json 데이터를 받고,
JObject 클래스의 정적 클래스 Parse 를 통해 Object 로 반환 합니다.
그리고, 해당 Object 의 Key 를 통해 데이터를 반환 받고,
루트 Object 내 또다른 Object 를 Object 로 반환하여 접근하여 데이터를 반환 하는 방법을 취하고 있습니다.
만일, List 혹은 Array 형태로 제공되는 요소가 있다면 JArray 를 사용하여 동일한 방법으로 데이터를 반환하고 접근하시면 됩니다.
이렇게 key 를 통해 데이터를 접근하고, 데이터를 내 임의의 객체명 혹은 변수로 받는 파싱 기법에 대해 알아보았습니다.
'프로그래밍 > C#' 카테고리의 다른 글
using 을 통한 리소스 해제 기법 (0) | 2014.12.02 |
---|---|
JavaScriptSerializer 를 통한 JSON Serialization (0) | 2014.11.30 |
LINQ 를 통한 C# XML 파싱 (LINQ to XML) (0) | 2014.11.29 |