选择类型以根据该数据的内容从JSON数据填充

时间:2012-07-10 19:45:25

标签: c# json.net

这是我正在尝试反序列化的数据

{
    "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对象。

对解决方案的任何建议都会有很大的意义

2 个答案:

答案 0 :(得分: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());
    }
}

答案 1 :(得分:0)

创建一个直接映射到内容的视图模型。然后根据视图模型投影特定的实现。