[]是一种在json结果中表示空值的有效方法吗?

时间:2012-10-07 01:42:47

标签: c# .net json api jayrock

我正在尝试使用第三方JSON API,并且期望空值根本没有提供任何值,从结果中删除,或者某些默认值。相反,如果值不存在,API将返回[]代替单个值(不是数组):

"SomeExpectedDate": [],
"SomeExpectedString": [],
...

当我尝试使用JayRock JsonConvert反序列化时,它失败了,因为我正在尝试加载到单个String或DateTime值。

这是正常的,还是应该向API提供商投诉(这是最近推出的API)

2 个答案:

答案 0 :(得分:2)

一般来说,没有。在JSON []中表示一个空数组。如果要表示空值,请使用null关键字。像:

{"someString": null}

虽然就你希望如何在你的JSON中表示一个空值而言,这完全取决于你。如果您编写接收代码以便它理解空数组等于null,那肯定会有效。

在我看来,这将是一个非常可疑/不可靠/困难的维护方法。使用null关键字或使用空字符串({"someString": ""})失败更有意义。

修改

要回复有关与使用第三方API相关的此问题的更新,我认为这绝对是一个需要使用API​​提供程序的问题。他们不应该返回[],如果他们真正的意思是null。虽然他们发送的内容在技术上仍然是有效的JSON,但他们使用[]而不是null在语义上是有问题的。

答案 1 :(得分:0)

如果您使用的第三方API表示空数组为空,那么这完全有效,您需要围绕它编写代码。

它肯定不同于我之前见过的任何东西,因为json有一个实际的null关键字,但它是完全合法的语法。