我正在使用一个返回我需要反序列化的 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; }
}
当 Response 在其变体字段中包含字典时,它工作得很好,但是当它包含一个空数组时它会失败。我从 Newtonsoft 收到一个错误,说不能将数组反序列化为字典。如果我将 Variations 属性定义为一个数组,它适用于空数组,但当它是一个字典时它会失败。我该怎么做才能正确反序列化两个可能的值,或者忽略空数组并将 Variations 设置为 null 当它是一个数组而不是失败时。
谢谢。