【发布时间】:2012-10-07 01:42:46
【问题描述】:
我正在尝试使用第 3 方 JSON API,并且预计 null 值将根本没有提供任何值、被排除在结果之外或某些默认值。相反,如果值不存在,API 会返回 [] 代替单个值(不是数组):
"SomeExpectedDate": [],
"SomeExpectedString": [],
...
当我尝试使用 JayRock JsonConvert 对其进行反序列化时,它失败了,因为我试图加载到单个 String 或 DateTime 值中。
这正常吗,还是我应该去投诉API提供者(这是最近推出的API)
【问题讨论】:
-
为什么不直接使用
null? BTW[]代表一个空数组而不是一个空值。 -
这是我为 Qt 的 JSON 解析器所做的。不是很优雅,理论上
[]是一个合法的 JSON 字符串,所以有一些歧义,但有些语言没有 NULL 对象,并且其中一些相同的语言不能容忍null在它们的值字典对象。 (请注意,JSON 字符串中 null 的正确值是字符“null”,不带任何引号。) -
但请注意,API 提供者可以将 API 生成的 JSON 字符串指定为任何合法的 JSON,而
"SomeExpectedString": []是合法的 JSON。 -
嗯,它比
null少了两个字符,但如果这就是它的本意,这是一个非常值得怀疑的优化。 -
@nneonneo -- 不是“优化”,更多的是对没有自然表示空对象的环境的“适应”。