我正在使用一个返回json对象的API,我需要对其进行反序列化。我的问题是,这些对象中的一个成员有时是空数组(“[]”),有时是字典(“{“1”:{...},“2”:{...}}”)。我希望将其反序列化为数组或字典,因为我并不关心ID,我只想要所有对象的列表。以下是我如何反序列化该对象:
var response = JsonConvert.DeserializeObject<Response>(json);
以下是Response类的定义:
public class Response
{
[JsonProperty(PropertyName = "variations")]
public Dictionary<int, Variation> Variations { get; set; }
}
当响应中的variations字段包含字典时,它可以很好地工作,但是当它包含空数组时,它会失败。我收到了来自Newtonsoft的错误,说数组无法反序列化为字典。如果我将Variations属性定义为数组,则对于空数组,它可以正常工作,但是当它是字典时,它会失败。我应该怎么做才能正确地反序列化两个可能的值,或者在它是一个数组时忽略空数组并将Variations设置为null而不是失败。
谢谢。
dynamic
(但我不使用.NET4或dynamic)。 - user166390