본문 바로가기

프로그래밍/C#

JSON Text 파싱 방법

이번 포스팅에서는 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 를 통해 데이터를 접근하고, 데이터를 내 임의의 객체명 혹은 변수로 받는 파싱 기법에 대해 알아보았습니다.