我有以下問題:我是 C# 初學者,我想使用 OpenWeatherApi 創建一個天氣應用程式。api 的回應如下所示(這只是一個示例): [ { "name": "London", "lat": 51.5085, "lon": -0.1257, "country": "GB" }, I想要獲取 lat 和 lon 值。我的 C# 代碼如下所示:
public class CoordinatesResponse
{
public double Lat { get; set; }
public double Lon { get; set; }
}
private static string _coordinatesResponse;
static void ExtractCoordinatesFromJson()
{
CoordinatesResponse coordinatesresponse = JsonConvert.DeserializeObject<CoordinatesResponse>(_coordinatesResponse);
Console.WriteLine(coordinatesresponse.Lat);
Console.WriteLine(coordinatesresponse.Lon);
}
我的錯誤如下:
未處理的例外。Newtonsoft.Json.JsonSerializationException:無法將當前 JSON 陣列(例如 [1,2,3])反序列化為型別“WeatherApp.CoordinatesResponse”,因為該型別需要 JSON 物件(例如 {"name":"value"})來反序列化正確。要修復此錯誤,請將 JSON 更改為 JSON 物件(例如 {"name":"value"})或將反序列化型別更改為陣列或實作集合介面的型別(例如 ICollection、IList),例如可以從 JSON 陣列反序列化。JsonArrayAttribute 也可以添加到型別中以強制它從 JSON 陣列反序列化。
我錯了什么?
uj5u.com熱心網友回復:
你的問題出在型別上。作為一個陣列,你必須使用List<CoordinatesResponse>:
static void ExtractCoordinatesFromJson()
{
var coordinatesresponses = JsonConvert.DeserializeObject<List<CoordinatesResponse>>(_coordinatesResponse);
foreach (var coordinatesresponse in coordinatesresponses)
{
Console.WriteLine(coordinatesresponse.Lat);
Console.WriteLine(coordinatesresponse.Lon);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465775.html
