Csharp/C#教程:使用Newtonsoft Json.NET解析多维JSON数组分享


使用Newtonsoft Json.NET解析多维JSON数组

我让Json返回如下:

[{“CreatedBy”:“GIS_DB”,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:39,“ModifiedBy”:“”,“ModifiedDate”:“”,“名称“:”CF-39“,”StatusId“:1,”TrailCoordinates“:[{”CreatedBy“:”GIS_DB“,”CreatedDate“:”3/8/2012 10:44:00 AM“,”Id“: 1637年, “纬度”:32.76004207, “经度”: – 97.34006853, “ModifiedBy”: “”, “ModifiedDate”: “”, “SortOrder的”:1, “TrailId”:39},{ “CreatedBy”: “GIS_DB” ,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:1638,“纬度”:32.76004333,“经度”: – 97.34012121,“ModifiedBy”:“”,“ModifiedDate”:“ “,”SortOrder“:2,”TrailId“:39}]},{”CreatedBy“:”GIS_DB“,”CreatedDate“:”3/8/2012 10:44:00 AM“,”Id“:40, “ModifiedBy”: “”, “ModifiedDate”: “”, “名称”: “CF-40”, “StatusId”:1, “TrailCoordinates”:[{ “CreatedBy”: “GIS_DB”, “CreatedDate”:“3 / 8/2012 10:44:00 AM“,”Id“:3755,”纬度“:32.76034332,”经度“: – 97.3402069,”ModifiedBy“:”“,”ModifiedDate“:”“,”SortOrder“:1 ,“TrailId”:40},{“CreatedBy”:“GIS_DB”,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:3756,“纬度”:32.76019181,“经度” :-97.3402448, “ModifiedBy”: “”, “ModifiedDate”: “”, “SortOrder的”:2 “TrailId”:40}]}]

这些是我的class级……

public class Trails { [MonoTouch.Foundation.Preserve] public Trails(){ TrailCoord = new List();} [MonoTouch.Foundation.Preserve, JsonProperty("Name")] public string TrailName { get; set; } [MonoTouch.Foundation.Preserve, JsonProperty("StatusId")] public int StatusId { get; set; } [MonoTouch.Foundation.Preserve, JsonProperty("TrailCoordinates")] public List TrailCoord { get; set; } // public trailcoords public Trails (string trailname, int statusid, List trailcoord) { TrailName = trailname; StatusId = statusid; TrailCoord = trailcoord; } } public class trailcoords { [MonoTouch.Foundation.Preserve] public trailcoords(){} [MonoTouch.Foundation.Preserve, JsonProperty("TrailId")] public string TrailId { get; set; } [MonoTouch.Foundation.Preserve, JsonProperty("Latitude")] public double Latitude { get; set; } [MonoTouch.Foundation.Preserve, JsonProperty("Longitude")] public double Longitude { get; set; } public trailcoords (string trailid, double latitude, double longitude) { TrailId = trailid; Latitude = latitude; Longitude = longitude; } } List Posts = JsonConvert.DeserializeObject<List> ( json ); 

所以从这里我不知道如何访问列表中的纬度和经度项。 我可以访问像TrailName这样的东西没有问题,但不知道我在数组中的数组中的项目做错了什么。 我想添加它们,以便我可以将它们绘制为类似于我所做的结构中的线条(硬编码值):

 CLLocationCoordinate2D[] tmpTrail1 = new CLLocationCoordinate2D[]{ new CLLocationCoordinate2D(32.751531, -97.361755), new CLLocationCoordinate2D(32.751451, -97.356625), new CLLocationCoordinate2D(32.751500, -97.332077), }; CLLocationCoordinate2D[] tmpTrail2 = new CLLocationCoordinate2D[] { new CLLocationCoordinate2D(32.727353, -97.361139), new CLLocationCoordinate2D(32.747731, -97.359896), new CLLocationCoordinate2D(32.765735, -97.360360), }; _trailOverlayPoints = new List(); _trailOverlayPoints.Add(tmpTrail1); _trailOverlayPoints.Add(tmpTrail2); 

我会解析json字符串,而不是声明很多类

 JArray jArr = (JArray)JsonConvert.DeserializeObject(jsonstr); foreach (var item in jArr) { foreach(var subitem in item["TrailCoordinates"]) { Console.WriteLine(subitem["Longitude"] + " " + subitem["Latitude"]); } } 

如果monotouch支持dynamic你也可以写

 dynamic jArr2 = JsonConvert.DeserializeObject(jsonstr); foreach (dynamic item in jArr2) { foreach (var subitem in item.TrailCoordinates) { Console.WriteLine(subitem.Longitude + " " + subitem.Latitude); } } 

你甚至可以使用Linq

上述就是C#学习教程:使用Newtonsoft Json.NET解析多维JSON数组分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 JArray jArr = (JArray)JsonConvert.DeserializeObject(jsonstr); var coords = jArr .Select(x => x["TrailCoordinates"]) .SelectMany(x=>x) .Where(x => x["TrailId"].ToString() == "40") .Select(x => new { Lat = double.Parse(x["Latitude"].ToString()), Lon=double.Parse(x["Longitude"].ToString()) }) .ToArray(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1004067.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐