0

次のような JSON ノードがあります。

"folders":[
    {"Videos":[1196717,2874999,898084]},
    {"Fun":[2443301,3671]},
    {"News":[62689,58867,11385]}
]

Dictionary<string, List<int>>私はそれをまたは類似のものにデシリアライズしたい。私は現在メンバーを持っています:

[DataMember(Name = "folders")]
public Dictionary<string, List<int>> Folders;

そして、次のような出力が期待されます。

Folders = new Dictionary<string, List<int>>() {
    {"Videos", new List<int>() { 1196717, 2874999, 898084 }},
    {"Fun",    new List<int>() { 2443301, 3671 }},
    {"News",   new List<int>() { 62689, 58867, 11385 }}
};

デシリアライザーを次のように実装しました。

var serializer = new DataContractJsonSerializer(
    typeof(T),
    new DataContractJsonSerializerSettings() {
        DateTimeFormat = new DateTimeFormat("yyyy-MM-ddTHH:mm:ss.fffffffZ"),
    }
);
T result = (T)serializer.ReadObject(response);

しかし、単にエラーが発生します:

データ コントラクト型 'System.Runtime.Serialization.KeyValue`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.List`1[[システム.Int32、mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089]]、mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089]]' は、必要なデータ メンバー 'Key,値' が見つかりませんでした。

これは、もっと似たようなものを期待しているためだと理解していますが、その形式は私の手に負えません。

"folders":[
    {
        "key":"Videos",
        "value":[1196717,2874999,898084]
    },{
        "key":"Fun",
        "value":[2443301,3671]
    },{
        "key":"News",
        "value":[62689,58867,11385]
    }
]

これを逆シリアル化するにはどうすればよいですか?

4

3 に答える 3