我有一些C#代碼,我從API獲取JSON數據反序列化JSON並顯示結果時,遇到了異常。該JSON看起來是這樣的:試圖在一個DataGridView
{
"count": 32696,
"results": [{
"data_id": 0,
"name": "Extended Potion of Ghost Slaying",
"rarity": 0,
"restriction_level": 0,
"img": "",
"type_id": 0,
"sub_type_id": 0,
"price_last_changed": "2013-03-18 17:00:31 UTC",
"max_offer_unit_price": 0,
"min_sale_unit_price": 0,
"offer_availability": 0,
"sale_availability": 0,
"sale_price_change_last_hour": 0,
"offer_price_change_last_hour": 0
}]
}
(有一個以上的成績只是一個項目,雖然。)
我做了2類是這樣的:
internal class MyClass
{
public int data_id { get; set; }
public string name { get; set; }
public int rarity { get; set; }
public int restriction_level { get; set; }
public string img { get; set; }
public int type_id { get; set; }
public int sub_type_id { get; set; }
public string price_last_changed { get; set; }
public int max_offer_unit_price { get; set; }
public int min_sale_unit_price { get; set; }
public int offer_availability { get; set; }
public int sale_availability { get; set; }
public int sale_price_change_last_hour { get; set; }
public int offer_price_change_last_hour { get; set; }
}
internal class RootObject
{
public int count { get; set; }
public List<MyClass> results { get; set; }
}
這裏是
using (WebClient wc = new WebClient())
{
string URI = "a good url";
wc.Headers.Add("Content-Type", "text");
string HtmlResult = wc.DownloadString(URI);
MyClass[] result = JsonConvert.DeserializeObject<MyClass[]>(HtmlResult);
DataTable dt = (DataTable)JsonConvert.DeserializeObject(HtmlResult, (typeof(DataTable)));
this.dataGridView1.DataSource = dt;
}
但是當我運行此代碼我得到一個錯誤:在那裏我得到的JSON和反序列化部分
Additional information: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'gwspiderv2.MyClass[]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
我已經在另一個API上使用這種類型的代碼而沒有錯誤。我究竟做錯了什麼?
呀,你已經有了JSON一(1)對象本身,而不是在一個數組,只是它的花括號坐在那裏。它在方括號之間嗎?不,這不對。在JSON中,數組是逗號分隔的方括號內的對象或值序列。你正在告訴反序列化器反序列化一個數組 - 你告訴它要在數組中堅持*。所以它尋找一個數組。相反,它發現你給了它什麼。所以它說「這不是一個數組」。 –
你的原始JSON是什麼樣的?根據錯誤,它必須是JSON對象而不是數組。也許你打算將JSON反序列化爲你沒有使用的'RootObject'類型? – dbc
JSON的樣子:{ 「計數」:32696, 「結果」:[{ 「data_id」:0, 「名」: 「鬼毀滅擴展藥水」, 「稀有」:0, 「restriction_level」:0,」 img「:」「,」type_id「:0,」sub_type_id「:0,」price_last_changed「:」2013-03-18 17:00:31 UTC「,」max_offer_unit_price「:0,」min_sale_unit_price「:0,」offer_availability 「:0,」 sale_availability 「:0,」 sale_price_change_last_hour 「:0,」 offer_price_change_last_hour 「:0},{」 data_id 「:1,」 名 「:」 MONSTER ONLY莫阿徒手*等 – Helmuteke