繁体   English   中英

Json反序列化C#

[英]Json Deserialize C#

我想解析这个json文件。

{ “特征”:[{ “类型”: “功能”, “几何”:{ “类型”: “多边形”, “坐标”:[[[26.4217861898109,40.127607984644],[26.4219934821323,40.1275230229872],[26.4218810759267,40.1273800013679 ],[26.4216801413981,40.1274730404221],[26.4217861898109,40.127607984644]]],“properties”:{“ParselNo”:“1”,“Alan”:“340.48 m2”,“Mevkii”:“ - ”,“Nitelik” : “ARSA”, “阿达”: “698”, “IL”: “恰纳卡莱”, “ILCE”: “MERKEZ”, “Pafta”: “16”, “Mahalle”: “巴尔巴罗斯”}}],“类型“:” 的FeatureCollection”, “CRS”:{ “类型”: “姓名”, “属性”:{ “名称”: “EPSG:4326”}}}

我试试这段代码:

string fileName = file.FileName;
string json = System.IO.File.ReadAllText(fileName);
dynamic stuff = JsonConvert.DeserializeObject(json);

string s1 = Convert.ToString(stuff.features.Count);
string s2 = stuff.properties.ParselNo;
MessageBox.Show(s1);
MessageBox.Show(s2);

s1正在工作,但s2给出了错误。 我该如何解决?

我希望得到这样的:

Coordinates[] coordinates = [(26.xx, 40.xx), (26.xx,40.xx) ... ]
ParselNo = 1
Alan = 340.48
Nitelik = Arsa
Ada = 698
İl = Çanakkale
İlçe = Merkez
Pafta = 16
dat_name = EPSG:4326

我能做什么?

如果你正确格式化你的json,我相信

 stuff.features.properties.ParselNo;

应该得到Parse1No

  {  
   "features":[  
      {  
         "type":"Feature",
         "geometry":{  
            "type":"Polygon",
            "coordinates":[  
               [  
                  [  
                     26.4217861898109,
                     40.127607984644
                  ],
                  [  
                     26.4219934821323,
                     40.1275230229872
                  ],
                  [  
                     26.4218810759267,
                     40.1273800013679
                  ],
                  [  
                     26.4216801413981,
                     40.1274730404221
                  ],
                  [  
                     26.4217861898109,
                     40.127607984644
                  ]
               ]
            ]
         },
         "properties":{  
            "ParselNo":"1",
            "Alan":"340.48 m2",
            "Mevkii":"-",
            "Nitelik":"Arsa",
            "Ada":"698",
            "Il":"Çanakkale",
            "Ilce":"Merkez",
            "Pafta":"16",
            "Mahalle":"Barbaros"
         }
      }
   ],
   "type":"FeatureCollection",
   "crs":{  
      "type":"name",
      "properties":{  
         "name":"EPSG:4326"
      }
   }
}

根据json你提供的功能是List<Feature>所以你不能访问像stuff.features.properties.ParselNo这样的列表属性它应该是

stuff.features[0].properties.ParselNo

我使用的features[0]因为它会得到第一个feature从列表中features.Count将返回的数量featureslist ,你可以使用http://json2csharp.com/检查您的json

编辑

关于你的第二个问题应该是这样的

List<List<double>> s2 =stuff.features[0].geometry.coordinates[0].ToObject<List<List<double>>>();
var firstcordinates = s2[0];

它将从数组中获取坐标,而s2[0]将从列表中获取第一个坐标

我试试这个:

 string s2 = stuff.features.properties.ParselNo;
 MessageBox.Show(s2);

给出这个错误: 错误......

这段代码工作:stuff.features [0] .properties.ParselNo但不要这样:stuff.features [0] .geometry.coordinates [0];

我不明白:( 错误代码..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM