我無法反序列化當前JSON陣列(例如[1,2,3])轉換成類型 '',因爲類型需要JSON對象(例如{ 「名稱」: 「值」})
「由於類型需要JSON對象(例如{」name「:」value「})才能正確地反序列化,所以無法將當前JSON數組反序列化(例如[1,2,3])爲類型''」錯誤
我查看了大部分類似的問題,但沒有找到我正在尋找的答案,所以我正在問一個新問題。
這裏是我的JSON:
{
"coord": {
"lon": 105.84,
"lat": 21.59
},
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10n"
}
],
"base": "stations",
"main": {
"temp": 20.31,
"pressure": 1010.36,
"humidity": 98,
"temp_min": 20.31,
"temp_max": 20.31,
"sea_level": 1026.71,
"grnd_level": 1010.36
},
"wind": {
"speed": 1.86,
"deg": 124.5
},
"rain": {
"3h": 0.3075
},
"clouds": {
"all": 92
},
"dt": 1482264413,
"sys": {
"message": 0.0114,
"country": "VN",
"sunrise": 1482190209,
"sunset": 1482229157
},
"id": 1566319,
"name": "Thai Nguyen",
"cod": 200
}
這裏是我的代碼:
private void Form1_Load(object sender, EventArgs e)
{
string url = "http://api.openweathermap.org/data/2.5/weather?q=London&units=metric&appid={MyAppID}";
HttpWebRequest httpWebRequset = (HttpWebRequest)WebRequest.Create(url);
httpWebRequset.Method = WebRequestMethods.Http.Get;
httpWebRequset.ContentType = "application/json";
HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequset.GetResponse();
using (var StreamReader = new StreamReader(httpResponse.GetResponseStream()))
{
string responseString = StreamReader.ReadToEnd();
ResponseData data = JsonConvert.DeserializeObject<ResponseData>(responseString);
ShowTemp.Text = data.main.temp + "°C";
ShowWheater.Text = data.weather.description;
}
}
當過我嘗試獲取的溫度我能找到它,但是當我想說明從:
{
...
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10n"
}
]
...
}
我得到的錯誤。
顯示你的'ResponseData'類。 – Equalsk
ResponseData類是什麼樣的?我懷疑它預計天氣對象的格式如'{「id」:500,「main」:「Rain」,「description」:「小雨」,「icon」:「10n」}'。您嘗試解析到天氣對象的方括號表示它正在嘗試讀取對象數組。 –
事實上,在你的這個類的根對象中,你可能需要類似'public List weather {get; set;}'其中'Weather'是一個具有類似'id'和'description'屬性的類。 –
Equalsk