0

これが私がデシリアライズしようとしているデータです

{
    "elements": [
        {
            "name": "Conference Room 3D",
            "code": "room1",
            "type": 0,
            "bounds": {
                "southWestLat": 42.06258564597228,
                "southWestLng": -88.05174744187781,
                "northEastLat": 42.062638767104781,
                "northEastLng": -88.05170306794393
            }
        },
        // ....
    ]
}

特定の種類のデータのみを期待している場合、これは非常に簡単ですが、その要素配列に他の種類のデータを入れることができる必要があります。型のペアは、オブジェクトが保持するデータの型を指定する列挙です。その番号は、オブジェクトがシリアル化するクラスにマップされます。

例えば

  • MapElementConferenceRoom への 0 マップ
  • 1 つが MapElementFocusRoom にマップされます

タイプキーを読み取るカスタム JsonConverter を作成できると思っていましたが、JsonReader オブジェクトを巻き戻すことはできません。

解決策の提案は大歓迎です

4

2 に答える 2

1
dynamic dynJson = JsonConvert.DeserializeObject(json);
foreach (var item in dynJson.elements)
{
    if(item.type==0)
    {
        //Do your specific deserialization here using "item.ToString()"
        //For ex,
        var x = JsonConvert.DeserializeObject<MapElementConferenceRoom>(item.ToString());
    }
}
于 2012-07-10T20:12:57.440 に答える
0

コンテンツに直接マップするビュー モデルを作成します。次に、ビュー モデルに基づいて特定の実装を投影します。

于 2012-07-10T19:51:09.493 に答える