심재운 블로그

728x90
반응형

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

 

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
  }
]

 

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) 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

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.

비밀글모드

  1. http://aspdotnet.tistory.com/226

    dictonary 관련 참고 사이트
    2016.10.14 09:32 신고
  2. http://www.c-sharpcorner.com/UploadFile/manas1/json-serialization-and-deserialization-using-json-net-librar/
    2017.04.14 18:08 신고
  3. http://www.c-sharpcorner.com/UploadFile/9bff34/3-ways-to-convert-datatable-to-json-string-in-Asp-Net-C-Sharp/
    2017.04.14 18:08 신고
  4. https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/json-and-xml-serialization
    2017.04.14 18:12 신고
loading