C# 反序列化包含空数组的JSON将变为null

C# 反序列化包含空数组的JSON将变为null,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,我正在尝试反序列化以下JSON: { "ListA":[], "ListB": [ { "Item1":{"Id":"-1"} } ] } ListB反序列化正确,但ListA只是反序列化为null;我更喜欢将其反序列化为空列表 我反序列化此JSON的代码如下: var settings = new JsonSerializerSettings(); settings.ContractResolver =

我正在尝试反序列化以下JSON:

{
    "ListA":[],
    "ListB":
    [
        {
            "Item1":{"Id":"-1"}
        }
    ]
}
ListB反序列化正确,但ListA只是反序列化为null;我更喜欢将其反序列化为空列表

我反序列化此JSON的代码如下:

var settings = new JsonSerializerSettings();
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
settings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
settings.TypeNameHandling = TypeNameHandling.Auto;
settings.Binder = new TypeNameSerializationBinder(modelBindingTypeAssembliesFactory);
var myObject = JsonConvert.DeserializeObject<MyType>(Encoding.ASCII.GetString(jsonContent), settings);
var settings=newjsonserializersettings();
settings.ContractResolver=新的CamelCasePropertyNamesContractResolver();
添加(新的StringEnumConverter{CamelCaseText=true});
settings.typenameholling=typenameholling.Auto;
settings.Binder=新的TypeNameSerializationBinder(modelBindingTypeAssembliesFactory);
var myObject=JsonConvert.DeserializeObject(Encoding.ASCII.GetString(jsonContent),设置);

有什么想法吗?我本以为正确的行为是[]变成一个空列表。

什么的空列表?物体?串?由于没有数据,反序列化程序不知道要创建什么类型的列表。MyType的声明在哪里?
MyType
?不久前我也想要这个功能。每次使用列表时,我都会验证它是否为空,这没什么大不了的。我无法复制它。我获取了您的类,将它们粘贴到中,将
RootObject
重命名为
MyType
,然后使用这些类和您的代码反序列化您的JSON——只是我没有您的
modelBindingTypeAssembliesFactory
,所以我不得不删除
settings.Binder=…
行。当我这样做时,
ListA
被反序列化为空列表,而不是空列表。你能提供一个重现问题的方法吗?