본문 바로가기

프로그래밍/C#

JavaScriptSerializer 를 통한 JSON Serialization

이번 포스팅에서는 .NET Framework 3.5 부터 추가된 JavaScriptSerializer 클래스를 통해

 

JSON 데이터를 Serialization(직렬화) / Deserialize(역직렬화) 하는 방법에 대해 배워보겠습니다.

 

JavaScriptSerializer 클래스는 Json 데이터를 직렬화 / 역직렬화 하는 기능을 제공하며,

 

System.Web.Script.Serialization 네임스페이스에 포함되어 있습니다.

 

해당 네임스페이스를 사용하기 위해선 System.Web.Extensions(System.Web.Extensions.dll) 어셈블리를 참조하셔야 합니다.

(ASP.NET 에서는 이미 참조되어 있으므로 불필요)

 

본 포스팅에서는 간단한 Facebook Graph API 를 통해 받은 Json 데이터를 예제로 하도록 하겠습니다.

 

 

 

 

 

우선 프로젝트에서 참조관리자를 통해 Extensions 어셈블리를 참조하도록 합니다.

 

 

본 프로젝트에서 사용될 예제 Facebook Graph Json 데이터 입니다. (네이버 D2 페이지의 데이터를 받아옴)

 

 

        class FacebookObject
        {
            public long id { get; set; }
            public string about { get; set; }
            public bool can_post { get; set; }
            public string category { get; set; }
            public int checkins { get; set; }
            public CoverObject cover { get; set; }
        }

        class CoverObject
        {
            public long cover_id { get; set; }
            public int offset_x { get; set; }
            public string source { get; set; }
        }

        static void Main(string[] args)
        {

            WebClient client = new WebClient();

            // 웹 URL을 통해 String 데이터로 반환
            string jsonStr = client.DownloadString("http://graph.facebook.com/353497304778969");

            JavaScriptSerializer serializer = new JavaScriptSerializer();
          
            // Json String 를 객체로 반환 (역직렬화)
            FacebookObject fo = serializer.Deserialize(jsonStr);

            // 객체를 Json String 으로 반환 (직렬화)
            string json = serializer.Serialize(fo);

            System.Console.WriteLine(json);
        }

 

 

WebClient 클래스를 통해 웹 URL 에 있는 json 데이터를 string 으로 반환하여 받고,

 

JavaScriptSerializer 클래스를 통해 객체로 역직렬화 하고, 다시 객체를 직렬화 하는 예제 입니다.

 

이렇게 JavaScriptSerializer 클래스를 사용하면 손쉽게 객체를 json 으로 변경하여 전송할 수 있고,

 

json 데이터를 객체로 파싱할 수 있는 방법을 제공 합니다.

 

 

Console.Json.zip

 

 

[참고]

(1) MSDN - http://msdn.microsoft.com/ko-kr/library/system.web.script.serialization.javascriptserializer(v=vs.90).aspx

'프로그래밍 > C#' 카테고리의 다른 글

using 을 통한 리소스 해제 기법  (0) 2014.12.02
JSON Text 파싱 방법  (0) 2014.12.01
LINQ 를 통한 C# XML 파싱 (LINQ to XML)  (0) 2014.11.29