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