Преобразование json в список ?
Привет, не могли бы вы сказать мне, пожалуйста, как преобразовать это в список? Я поощряю эту ошибку :
Необработанное исключение типа 'Newtonsoft.Json.JsonSerializationException' произошло в Newtonsoft.Json.Net20.dll
Дополнительные сведения: не удается десериализовать JSON-объект в тип System.Коллекции.Generic.List`1[App_Code.APIResult]'.
каждый раз, когда я хочу десериализовать ответ.
вот мой ответ:
{"status":"Ok","rows":[{"elements":[{"status":"Ok","duration":{"value":10,"text":""},"distance":{"value":62,"text":"۷۵ متر"}}]}],"origin_addresses":["35.724098,51.424491"],"destination_addresses":["35.724165,51.425121"]}
Что я уже пробовал:
public class APIResult { public class Duration { public int value { get; set; } public string text { get; set; } } public class Distance { public int value { get; set; } public string text { get; set; } } public class Element { public string status { get; set; } public Duration duration { get; set; } public Distance distance { get; set; } } public class Row { public IList<Element> elements { get; set; } } public class Example //{"status":"Ok", "rows":[ { "elements": [{"status":"Ok", "duration":{"value":11,"text":""}, "distance":{"value":62,"text":"۷۵ متر"}} ]} ], "origin_addresses":["35.724098,51.424491"], "destination_addresses":["35.724165,51.425121"]} } { public string status { get; set; } public IList<Row> rows { get; set; } public IList<string> origin_addresses { get; set; } public IList<string> destination_addresses { get; set; } }
private bool RequestTimeTrip2() { if (!mapNRPTTCEventWinService.ReqListInfo(dt_Main)) { //errLog return false; } string[] arrLatLon = null; string strResult = string.Empty; for (int i = 0; i < dt_Main.Rows.Count; i++) { arrLatLon = dt_Main.Rows[i]["Points"].ToString().Split('^'); for (int j = 0; j < arrLatLon.Length - 1; j++) { var url = "https://api.neshan.org/v1/distance-matrix?origins=" + arrLatLon[j].Split(',')[0] + "," + arrLatLon[j].Split(',')[1] + "&destinations=" + arrLatLon[j + 1].Split(',')[0] + "," + arrLatLon[j + 1].Split(',')[1]; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("Api-Key", "web.dSy4OSDOQtcMokSozr7qmAAvn55jSop5gX95PNTF"); var response = client.GetAsync(url).Result; List<App_Code.APIResult> objApiResult = new List<APIResult>(); string result = response.Content.ReadAsStringAsync().Result; // var responseString = new StreamReader(response.Content.ReadAsStreamAsync().Result).ReadToEnd(); StreamReader reader = new StreamReader(result); result = reader.ReadToEnd(); objApiResult = Newtonsoft.Json.JsonConvert.DeserializeObject<List<APIResult>>(result); // objApiResult = (App_Code.APIResult)Newtonsoft.Json.JsonConvert.SerializeObject(result); //List<App_Code.APIResult> lstResult = JsonConvert.DeserializeObject<List<App_Code.APIResult>>(responseString); // var lobjResult = Newtonsoft.Json.JsonConvert.DeserializeObject<List<APIResult>>(responseString); //var lobjResult = JsonConvert.DeserializeObject<APIResult>(responseString); // var deserialized = JsonConvert.DeserializeObject<IEnumerable<App_Code.APIResult>>(response.Content.ReadAsStringAsync().ToString()); // var lobjResult = Newtonsoft.Json.JsonConvert.DeserializeObject<List<APIResult1>>(responseString); } } return true; }
Richard Deeming
JSON, который вы показали, - это не список чего-либо. Это единственный объект, который, кажется, соответствует вашим Example
вложенный класс.
Newtonsoft.Json.JsonConvert.DeserializeObject<APIResult.Example>(result)