Home Full Site
Silverlight 에서의 JSON 사용

Silverlight에서 JSON을 사용하기 위해 System.Json 을 사용할 수 있다. (DataContractJsonSerializer 혹은 JSON.NET도 사용 가능) System.Json 은 Silverlight에서만 사용 가능한데, 먼저 Silverlight 프로젝트에 System.Json.dll 을 참조 추가한 후 사용한다. (초기에는 System.Json.dll 을 NuGet에서 지원하기도 하였으나, 현재는 지원하지 않는다)
System.Json 에는 크게 JsonObject, JsonArray, JsonValue 등이 주로 사용되는데, 하나의 JSON 객체를 표현하기 위해서는 JsonObject 클래스를, 복수개의 JSON 배열을 표현하기 위해서는 JsonArray 클래스, 그리고 JSON string을 파싱하기 위해서는 JsonValue를 사용한다. 아래 코드는 (1) JsonObject에 Name-Value Pair 데이타를 넣고 이로부터 JSON string을 생성하는 예제와 (2) JsonValue를 사용하여 JSON string을 JsonObject 객체로 파싱하는 예제이다.


예제

namespace SilverlightApplication1
{
    // 1. Silverlight 프로젝트에 System.Json.dll 추가
    //
    // 2. using System.Json 사용
    using System.Json;

    public partial class MainPage : UserControl
    {
        // 3. JsonObject 사용
        //    JSON string 생성 예
        private void JsonObjectToString()
        {
            JsonObject jObj = new JsonObject();
            jObj["Id"] = 1;
            jObj["Name"] = "Alex";

            MemoryStream mem = new MemoryStream();
            jObj.Save(mem);

            mem.Position = 0;
            using (StreamReader sr = new StreamReader(mem))
            {
                string jsonString = sr.ReadToEnd();
                Debug.WriteLine(jsonString);
            }
        }

        // 4. JsonValue 사용
        // JSON string을 JsonObject 객체로 파싱
        private void JsonStringToObject()
        {
            string jsonString = "{\"Id\": 1, \"Name\": \"Alex\"}";
            dynamic jObj = JsonValue.Parse(jsonString);
            int id = (int)jObj["Id"];
            string name = jObj["Name"];
            Debug.WriteLine(id + name);
        }
        
        //...    
    }
}    



© csharpstudy.com