我有這樣的代碼:反序列化,其中可以爲T的單個T類型的對象或數組列表<T>
var json = GetJsonData(path);
JObject event_dates_data = JObject.Parse(json);
var event_dates_list = JObject.Parse(event_dates_data["document"]["date"].ToString());
var event_dates = JsonConvert.DeserializeObject<List<EventDate>>(event_dates_list.ToString());
JSON可能包含一個數組的物體(例如「日期:[{},{ },{}]「)或僅一個(例如, 」日期:{}「)
的Json看起來像這樣:
{
"document": {
"result": "success",
"resultcode": "000000",
"note": null,
"totaldates": "1",
"date": {
"date_id": "351314",
"live": "n",
"datestart": "2012-03-07",
"dateend": "2015-03-07",
"timestart": "12:00",
"timeend": "14:00",
"date_available": "10000"
}
}
}
或者:
{
"document": {
"result": "success",
"resultcode": "000000",
"note": null,
"totaldates": "4",
"date": [
{
"date_id": "346022",
"live": "n",
"datestart": "2011-02-19",
"dateend": "2011-02-19",
"timestart": "12:00",
"timeend": "14:00",
"date_available": "10000"
},
{
"date_id": "346023",
"live": "n",
"datestart": "2011-02-20",
"dateend": "2011-02-20",
"timestart": "12:00",
"timeend": "14:00",
"date_available": "10000"
},
{
"date_id": "346024",
"live": "n",
"datestart": "2011-02-21",
"dateend": "2011-02-21",
"timestart": "12:00",
"timeend": "14:00",
"date_available": "10000"
},
{
"date_id": "546580",
"live": "y",
"datestart": "2015-08-15",
"dateend": "2015-08-15",
"timestart": "12:00",
"timeend": "14:00",
"date_available": "10000"
}
]
}
}
我對「日期」的POCO:
public class EventDate {
[JsonProperty("date_id")]
public string Id { get; set; }
[JsonProperty("live")]
[JsonConverter(typeof(AvailableForSalesFiledConverter))]
public bool AvailableForSales { get; set; }
[JsonProperty("datestart")]
public string DateStart { get; set; }
[JsonProperty("dateend")]
public string DateEnd { get; set; }
[JsonProperty("timestart")]
public string TimeStart { get; set; }
[JsonProperty("timeend")]
public string TimeEnd { get; set; }
[JsonProperty("date_available")]
public int DateAvailable { get; set; }
}
所以,當我試圖反序列化我得到異常: 「不能反序列化JSON當前對象(例如因爲該類型需要一個JSON數組(例如[1,2,3,4,5,7,9, \ r \ n到 修復此錯誤或者將JSON更改爲JSON數組(例如[1,2,3]) 或更改反序列化類型,以使其成爲正常的.NET類型 (例如,不是像整數這樣的原始類型,也不是像數組或列表的集合類型) 可以從JSON對象反序列化。 JsonObjectAttribute也可以加入到 類型,迫使它從一個JSON對象反序列化。\ r \ n路徑「DATE_ID」,2號線,13位」 我怎樣才能得到它的列表?
您錯過了這個問題的重點 - 有時該屬性是一個數組,有時它是一個單一的對象。如果您將其聲明爲列表,則當JSON具有單個對象時將不起作用,反之亦然。解決方案不僅僅是改變類聲明(儘管這是它的一部分)。 – 2014-08-30 14:42:10