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)を使用できます。

object[]JSON 文字列を(名前のない配列の場合) または(名前付きの配列の場合)に自動的に逆シリアル化します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[])になります。

于 2012-07-19T07:54:00.980 に答える