我正在使用一個API,它返回一個我需要反序列化的json對象。我的問題是,這些對象的成員之一有時是一個空數組(「[]」),有時是一個字典(「{」1「:{...},」2「:{...}}」 )。我想將它反序列化爲數組或字典,因爲我不關心這些ID,我只想要一個所有對象的列表。這裏是我反序列化對象:如何使用Newtonsoft反序列化可以是數組或字典的對象?
var response = JsonConvert.DeserializeObject<Response>(json);
這裏是Response類的定義:
public class Response
{
[JsonProperty(PropertyName = "variations")]
public Dictionary<int, Variation> Variations { get; set; }
}
它運作良好,當響應包含在它的變化領域的字典,但它失敗時它包含一個空數組。我從Newtonsoft得到一個錯誤,說一個數組不能被反序列化成一個字典。如果我將Variations屬性定義爲數組,則它適用於空數組,但它在字典時失敗。我可以做什麼來正確反序列化兩個可能的值,或者忽略空數組,並將變量設置爲null,而不是失敗。
謝謝。
那麼,什麼是一個混混來源:(我敢打賭,它是由PHP來了,是吧? – 2012-08-31 20:32:56
我所看到的建議「文本轉換之前更換」,但我覺得一個替代解決方案它也可以通過一個自定義的JsonConverter來完成 – 2012-08-31 20:38:40
@pst:這是一個好主意,沒有想到這麼做 – Carl