我有一个JSON数据,使用NewtonSoft JSON库,我无法将特定节点(坐标)提取到数组或列表。
这是我的JSON数据:
{
"features":[
{
"type":"Feature",
"geometry":{
"type":"MultiPolygon",
"coordinates":[
[
[
[
28.9574884865954,
40.262043212854
],
[
28.9577391646903,
40.2620393471008
],
[
28.9581300766863,
40.2620333177299
],
[
28.9581449735233,
40.261331625691
],
[
28.9575062426388,
40.2613229341457
],
[
28.9574884865954,
40.262043212854
]
]
]
]
},
"properties":{
"ParselNo":"3",
"SayfaNo":"6966",
"Alan":"4.300,00",
"Mevkii":"",
"Nitelik":"Arsa",
"CiltNo":"70",
"Ada":"513",
"Il":"Bursa",
"Ilce":"Osmangazi",
"Pafta":"H21b25d4b",
"Mahalle":"Emek"
}
}
],
"type":"FeatureCollection",
"crs":{
"type":"name",
"properties":{
"name":"EPSG:4326"
}
}
}
我不确定是否必须使用JsonConvert类或JsonParse类。
我“只”想要将包含lat / long值的“坐标”节点提取到一个定义良好的形式,如数组或C#或VB.NET中的列表。
答案 0 :(得分:1)
在解析JSON时,您应该始终执行的第一个事情是转到http://json2csharp.com并让它为您生成类。在您的情况下,这些类是:
public class Geometry
{
public string type { get; set; }
public List<List<List<List<double>>>> coordinates { get; set; }
}
public class Properties
{
public string ParselNo { get; set; }
public string SayfaNo { get; set; }
public string Alan { get; set; }
public string Mevkii { get; set; }
public string Nitelik { get; set; }
public string CiltNo { get; set; }
public string Ada { get; set; }
public string Il { get; set; }
public string Ilce { get; set; }
public string Pafta { get; set; }
public string Mahalle { get; set; }
}
public class Feature
{
public string type { get; set; }
public Geometry geometry { get; set; }
public Properties properties { get; set; }
}
public class Properties2
{
public string name { get; set; }
}
public class Crs
{
public string type { get; set; }
public Properties2 properties { get; set; }
}
public class RootObject
{
public List<Feature> features { get; set; }
public string type { get; set; }
public Crs crs { get; set; }
}
现在可以使用JSON.NET反序列化:
var root = JsonConvert.DeserializeObject<RootObject>(json);
此时您已获得RootObject的实例。抓住你想要的任何财产价值。
修改强>
如果你想要坐标首先要注意(通过研究我上面发布的类,coordinates
属于Geometry
类。Geometry
的一个实例class在Feature
类中,RootObject
类包含List<Feature>
。因此,要转到coordinates
,您需要遍历features
并提取{每个人{1}}。
coordinates