0

我正在写一段应该将 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);
        }

    }
}

但我需要将它解析为多个字典而不是模型对象(这将在最后,但目前我只需要字典)。

问候。

4

1 回答 1

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将是 a Dictionary<string,object>,其中键“B”和“C”处的元素将是对象数组 ( object[])

于 2012-07-19T07:54:00.980 回答