c# – Invalidcastexception JsonConvert.DeserializeObject
发布时间:2020-12-15 23:34:38 所属栏目:百科 来源:网络整理
导读:我收到一个无效的强制转换异常,指定的强制转换无效.在这一行: RootObject mountain = JsonConvert.DeserializeObjectRootObject(json1); 从documentation这应该没问题?我可以看到控制台输出正常吗? Response: [{“Height_ft”: 2999.0,“Height_m”: 914.
我收到一个无效的强制转换异常,指定的强制转换无效.在这一行:
RootObject mountain = JsonConvert.DeserializeObject<RootObject>(json1); 从documentation这应该没问题?我可以看到控制台输出正常吗?
Spinner spinner = (Spinner)sender; string urlmountain = "http://removed.azurewebsites.net/api/Mountains?name="; JsonValue json1 = FetchMountain(urlmountain+string.Format("{0}",spinner.GetItemAtPosition(e.Position))); //below................................. RootObject mountain = JsonConvert.DeserializeObject<RootObject>(json1); //this line string toast = mountain.Name; Toast.MakeText(this,toast,ToastLength.Long).Show(); private JsonValue FetchMountain(string urlmountain) { // Create an HTTP web request using the URL: HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(urlmountain)); request.ContentType = "application/json"; request.Method = "GET"; // Send the request to the server and wait for the response: using (WebResponse response = request.GetResponse()) { // Get a stream representation of the HTTP web response: using (Stream stream = response.GetResponseStream()) { // Use this stream to build a JSON document object: JsonValue jsonDoc1 = JsonObject.Load(stream); Console.Out.WriteLine("Response: {0}",jsonDoc1.ToString()); // Return the JSON document: return jsonDoc1; } } } public class RootObject { public string ID { get; set; } public double? Latitude { get; set; } public double? Longitude { get; set; } public string Name { get; set; } public double? Height_m { get; set; } public double? Height_ft { get; set; } public double? temperature { get; set; } public double? humidity { get; set; } public double? snowCover { get; set; } public override string ToString() { return Name; } } 解决方法
返回的json数据是一个对象数组,而不是单个对象,由开括号和右括号[]表示.您需要反序列化为数组或列表:
var mountains = JsonConvert.DeserializeObject<List<RootObject>>(json); 要从反序列化的有效负载访问第一个山,请使用.FirstOrDefault(). var mountain = mountains.FirstOrDefault(); if (mountain != null) { string toast = mountain.Name; Toast.MakeText(this,ToastLength.Long).Show(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |