2012-07-19 32 views
0

我正在寫一篇應該將一個JSON對象解析爲多個字典的應該。 我是用JSON幫手解析JSON到一個簡單的模型對象的familare。將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結構嗎? – 2012-07-19 07:15:46

回答

2

您可以使用JavaScriptSerializer類(程序集:System.Web.Extensions)。

它自動將JSon字符串反序列化爲object[](對於未命名的數組)或Dictionary<string,object>(對於命名數組)。

例如

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

data將是一個Dictionary<string,object>,其中元件在鍵「B」和「C」將是對象數組(object[]