以下是我试图反序列化的数据
{
"elements": [
{
"name": "Conference Room 3D",
"code": "room1",
"type": 0,
"bounds": {
"southWestLat": 42.06258564597228,
"southWestLng": -88.05174744187781,
"northEastLat": 42.062638767104781,
"northEastLng": -88.05170306794393
}
},
// ....
]
}
当我只期望某类数据时,这很简单,但我需要能够将其他类型的数据放入该元素数组中。类型对是一个枚举,用于指定对象所持有的数据类型。然后,这个数字映射到对象应该序列化到的类。
例如
- 0映射到MapElementConferenceeRoom
- 1映射到MapElementFocusRoom
- 等等
我想我可以写一个自定义的JsonConverter来读取类型键,但是你不能倒带JsonReader对象。
任何解决方案的建议都将被高度评价为
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());
}
}
创建一个直接映射到内容的视图模型。然后基于视图模型来规划具体的实现。