具有多种类型的GeoJson到C#类



我有一个GeoJson,它包含多边形和多极子,从中我需要根据Id选择一个多边形。但我无法反序列化它,因为我无法设置C#类来绑定它。多边形具有结构:List<List<List<double>>>而一个多极子是:List<List<List<List<double>>>>我使用的是System.Text.Json。有什么办法做到这一点吗?

样品GeoJson:

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "polygon",
"coordinates": [
[
[
7.6,
47.4
],...
]
]
},
"properties": {
"id":1
}
},
{
"type": "Feature",
"geometry": {
"type": "multipolygon",
"coordinates": [
[
[
[
7.4,
47.5
]
]
]
],...

让我们考虑以下json:

{
"type": "polygon",
"coordinates": [
[
[7.6,47.4],[2,3]
]
]
}

下面的类映射它:

public class X {
public List<List<List<decimal>>> coordinates {get; set;}
}

让我们测试一下:

var x = System.Text.Json.JsonSerializer.Deserialize<X>(json);
Console.WriteLine(x.coordinates[0][0][0]);

成功!打印:

7.6

我建议使用Newtonsoft.Json NuGet包。一旦您将JSON解析为JObject,您就可以简单地使用LINQ来查找所需的对象。

// if you need just one
jObject.Children().Where((jO) => jO["id"] == 1).First();
// if you need to loop over ones with the same id
foreach(JObject j in jObject.Children().Where((jO) => jO["id"] == 1))
{
}

相关内容

  • 没有找到相关文章

最新更新