我正在编写一段必须将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 :(得分:2)
您可以使用JavaScriptSerializer
类(程序集:System.Web.Extensions)。
它自动将JSon字符串反序列化为object[]
(如果是未命名的数组)或Dictionary<string,object>
(如果是命名数组)。
e.g。
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[]
)