이번 포스팅에서는 .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 데이터를 객체로 파싱할 수 있는 방법을 제공 합니다.
[참고]
'프로그래밍 > C#' 카테고리의 다른 글
using 을 통한 리소스 해제 기법 (0) | 2014.12.02 |
---|---|
JSON Text 파싱 방법 (0) | 2014.12.01 |
LINQ 를 통한 C# XML 파싱 (LINQ to XML) (0) | 2014.11.29 |