0

这是我要反序列化的数据

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

当我只期望某种数据时,这非常简单,但是我需要能够将其他类型的数据放入该元素数组中。类型对是一个枚举,它指定对象保存的数据类型。然后该数字映射到对象应序列化到的类。

例如

  • 0 映射到 MapElementConferenceRoom
  • 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 回答