使用Json.net反序列化GeoJSON坐标数组

时间:2018-09-19 00:46:49

标签: .net json.net geojson

我有一个如下所示的GeoJSON几何图形:

{
    "type":"Point",
    "coordinates":[-121.35753,38.49392]
}

我在创建一个可以表示这种情况的类时遇到了麻烦。我不断收到“无法转换类型的对象”。我以为这是我在这里遇到的坐标数组。

我尝试了这两个类定义:

Public Class GeoJSONPoint
    Public Property type As String
    Public Property coordinates() As Double
End Class

Public Class GeoJSONPoint
    Public Property type As String
    Public Property coordinates as List(Of Double)
End Class

找出点之后,我还需要弄清楚MultiPolygons,它是一个像这样的数组数组:

{
    "type":"MultiPolygon",
    "coordinates":[[[[-118.718979785211,34.2749418860063],[-118.71897943847,34.2746561231818],[-118.719144944,34.2746560927904],[-118.719145294476,34.2749418391076],[-118.718979785211,34.2749418860063]]]]
}

1 个答案:

答案 0 :(得分:0)

好,所以问题不在于我的课,而是我如何反序列化JSON。

即使完整的错误消息使它看起来好像暗示了正确的类型,这也不起作用:

Point = JsonConvert.DeserializeObject(Site.geoJSON)

您必须明确告诉它类型:

Point = JsonConvert.DeserializeObject(Of GeoJSONPoint)(Site.geoJSON)

更多测试表明,我可以为Point以及多边形和MultiPolygon以及它们不同级别的嵌套数组的坐标使用单个类定义:

Public Class geoJSONGeometry
    Public Property type As String
    Public Property coordinates As Object
End Class