C# 反序列化包含空数组的JSON将变为null
我正在尝试反序列化以下JSON: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 =
{
"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
被反序列化为空列表,而不是空列表。你能提供一个重现问题的方法吗?