【发布时间】:2021-08-04 21:48:36
【问题描述】:
我有这个 JSON,它是一个对象列表,就像这样。
"Fields": [
{
"fieldID": 1,
"name": "field"
}
]
列表为空时,这样发送
"Fields": [
{}
]
我将其作为字符串读入,然后尝试使用 JsonConvert.DeserializeObject<List<T>>(json); 对其进行反序列化,其中 T 是与字段模型匹配的对象。但是,当我这样做时,我会得到一个包含一个项目的新列表(计数 = 1,当它应该为 0 时),就像我反序列化这个 JSON 一样。
"Fields": [
{
"fieldID": 0,
"name": null
}
]
我怎样才能避免或解决这个问题?
【问题讨论】:
-
是什么阻止你检查 if(Fields[0].name==null) Fields=null; ?
-
只是额外的工作,我觉得应该被序列化程序捕获,固有地或通过设置。
-
如果这对你来说太麻烦了,你可以创建一个自定义序列化器
-
'列表为空时,这样发送'
"Fields": [ {} ]。它不是一个空列表。 这是一个包含一个元素的列表。空列表看起来像"Fields": [ ]。问题出在 JSON 中,而不是JsonConvert.DeserializeObject方法中。如果您无法修复 JSON,则只需检查第一个元素的属性并在属性具有默认值时将其删除。