재우니의 블로그

json 문자열을 object 로 변환하기 ( json to object c# )

 

 

{ \"test\":\"some data\" }

 

위에 json 형태의 문자열이 있는데, 이를 간단히 object 에 담을 수 있습니다.

 

 

1. DeserializeObject 함수 사용하기

 

 

DeserializeObject 함수에 문자열을 넣게 되면 이를 Deserialize 해서 object 화 하여 변경해 줍니다.

class Test {

      String test;

      String getTest() { return test; }

      void setTest(String test) { this.test = test; }

  }

JavaScriptSerializer json_serializer = new JavaScriptSerializer();

   Test routes_list =

          (Test)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");

 

2. Deserialize 함수로 strcut 구조에 담기

 

 

MyObj 라는 struct 를 구현하고, Deserialize 를 이용하여 struct 를 제네릭으로 명시하고 json 문자열을 할당하면

됩니다.

class MyProgram {

    struct MyObj {

        public string test { get; set; }

    }

    static void Main(string[] args) {

        var json_serializer = new JavaScriptSerializer();

        MyObj routes_list = json_serializer.Deserialize("{ \"test\":\"some data\" }");

        Console.WriteLine(routes_list.test);

        Console.WriteLine("Done...");

        Console.ReadKey(true);

    }

}

 

 

 

 

3. dynamic 사용하기 (c# 4.0 이상부터 지원)

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
dynamic item = serializer.Deserialize("{ \"test\":\"some data\" }"); 
string test= item["test"];

 

http://www.newtonsoft.com/json/help/html/SerializingCollections.htm

 

Serializing Collections

To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for. Json.NET will serialize the collection and all of the values it contains. Product p1 = new P

www.newtonsoft.com

 

 

3-1) Serializing Collections

Product p1 = new Product
{
    Name = "Product 1",
    Price = 99.95m,
    ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),
};
Product p2 = new Product
{
    Name = "Product 2",
    Price = 12.50m,
    ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),
};

List<Product> products = new List<Product>();
products.Add(p1);
products.Add(p2);

string json = JsonConvert.SerializeObject(products, Formatting.Indented);

======================== 결과 =====================


[
  {
    "Name": "Product 1",
    "ExpiryDate": "2000-12-29T00:00:00Z",
    "Price": 99.95,
    "Sizes": null
  },
  {
    "Name": "Product 2",
    "ExpiryDate": "2009-07-31T00:00:00Z",
    "Price": 12.50,
    "Sizes": null
  }
]

 

3-2) Deserializing Collections

string json = @"[
   {
     'Name': 'Product 1',
     'ExpiryDate': '2000-12-29T00:00Z',
     'Price': 99.95,
     'Sizes': null
   },
   {
     'Name': 'Product 2',
    'ExpiryDate': '2009-07-31T00:00Z',
    'Price': 12.50,
    'Sizes': null
  }
]";

List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);

Console.WriteLine(products.Count); //2

Product p1 = products[0];

Console.WriteLine(p1.Name); //Product 1

 

3-3) Deserializing Dictionaries

string json = @"{""key1"":""value1"",""key2"":""value2""}";

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

Console.WriteLine(values.Count); // 2

Console.WriteLine(values["key1"]); // value1