这是我正在尝试反序列化的数据
{
"elements": [
{
"name": "Conference Room 3D",
"code": "room1",
"type": 0,
"bounds": {
"southWestLat": 42.06258564597228,
"southWestLng": -88.05174744187781,
"northEastLat": 42.062638767104781,
"northEastLng": -88.05170306794393
}
},
// ....
]
}
当我只期待某种数据时,这很简单,但是我需要能够在该元素数组中放入其他类型的数据。类型对是枚举,它指定对象保存的数据类型。然后该数字映射到对象应序列化的类。
例如
我以为我可以编写一个自定义JsonConverter来读取类型键,但是你无法回放JsonReader对象。
对解决方案的任何建议都会有很大的意义
答案 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)
创建一个直接映射到内容的视图模型。然后根据视图模型投影特定的实现。