根据JSON数据的内容选择要填充的类型



以下是我试图反序列化的数据

{
    "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());
    }
}

创建一个直接映射到内容的视图模型。然后基于视图模型来规划具体的实现。

相关内容

  • 没有找到相关文章

最新更新