2012-07-19 2 views
0

여러 사전에 JSON 객체를 구문 분석해야하는 부분을 작성했습니다. JSON 도우미를 사용하여 JSON을 간단한 모델 객체로 파싱하는 데 익숙합니다.여러 사전에 JSON 객체 구문 분석

public static class JsonHelper 
{ 
    public static string ToJson<T>(T instance) 
    { 
     var serializer = new DataContractJsonSerializer(typeof(T)); 
     using (var tempStream = new MemoryStream()) 
     { 
      serializer.WriteObject(tempStream, instance); 
      return Encoding.UTF8.GetString(tempStream.ToArray(), 0, Convert.ToInt32(tempStream.Length)); 
     } 
    } 

    public static T FromJson<T>(string json) 
    { 
     var serializer = new DataContractJsonSerializer(typeof(T)); 

     using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json))) 
     { 
      return (T)serializer.ReadObject(tempStream); 
     } 

    } 
} 

는하지만 여러 사전이 아니라 (끝하지만 난 그냥 사전을 필요로하는 순간이 될 것입니다) 모델 객체에 구문 분석 할 필요가있다.

감사합니다.

+0

JSON 구조를 표시 할 수 있습니까? –

답변

2

JavaScriptSerializer 클래스 (어셈블리 : System.Web.Extensions)를 사용할 수 있습니다.

JSON 문자열을 object[] (이름없는 배열 인 경우) 또는 Dictionary<string,object> (이름이 지정된 배열 인 경우)으로 자동으로 deserialize합니다.

1)

// txt = [ {A: "foo", B: "bar", C: "foobar"}, {X: "foo", Y: "bar", Z: "foobar"} ] 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
var data = ser.Deserialize<object>(txt); 

data 각 서브 - 객체가 될 것이다 object[2] 될 것이다 Dictionary<string,object>

2)

// txt = {A: "foo", B: ["bar", 3.4], C: [1, 2, 3]} 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
var data = ser.Deserialize<object>(txt); 

dataDictionary<string,object> 요소에있을 것 키 "B"와 "C"는 객체 배열이됩니다 (object[])