我正在尝试使用第三方JSON API,并且期望空值根本没有提供任何值,从结果中删除,或者某些默认值。相反,如果值不存在,API将返回[]代替单个值(不是数组):
"SomeExpectedDate": [],
"SomeExpectedString": [],
...
当我尝试使用JayRock JsonConvert反序列化时,它失败了,因为我正在尝试加载到单个String或DateTime值。
这是正常的,还是应该向API提供商投诉(这是最近推出的API)
答案 0 :(得分:2)
一般来说,没有。在JSON []
中表示一个空数组。如果要表示空值,请使用null
关键字。像:
{"someString": null}
虽然就你希望如何在你的JSON中表示一个空值而言,这完全取决于你。如果您编写接收代码以便它理解空数组等于null,那肯定会有效。
在我看来,这将是一个非常可疑/不可靠/困难的维护方法。使用null
关键字或使用空字符串({"someString": ""}
)失败更有意义。
修改强>
要回复有关与使用第三方API相关的此问题的更新,我认为这绝对是一个需要使用API提供程序的问题。他们不应该返回[]
,如果他们真正的意思是null
。虽然他们发送的内容在技术上仍然是有效的JSON,但他们使用[]
而不是null
在语义上是有问题的。
答案 1 :(得分:0)
如果您使用的第三方API表示空数组为空,那么这完全有效,您需要围绕它编写代码。
它肯定不同于我之前见过的任何东西,因为json有一个实际的null
关键字,但它是完全合法的语法。