Десериализовать массив координат GeoJSON с помощью Json.net - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть геометрия 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 голосов
/ 19 сентября 2018

Хорошо, проблема была не в моем классе, а в том, как я десериализовал JSON.

Это не сработало, хотя полное сообщение об ошибке показало, что подразумевается правильный тип:

Point = JsonConvert.DeserializeObject(Site.geoJSON)

Вы должны явно указать тип:

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

Немного больше тестирования показало, что я могу использовать одно определение класса для координат Point, а также Polygon и MultiPolygonс их различными уровнями вложенных массивов:

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