JSON值是字符串,数字,真,假,空有效JSON吗? 即,
true
有效的JSON文档?或者必须是一个数组/对象?
有些验证者会接受此信息(例如http://jsonlint.com/),而有些则不接受(例如http://jsonschemalint.com/)。 RFC和json.org在这个问题上并不清楚。
答案 0 :(得分:8)
截至2014年3月:是。 From the specification:
JSON文本是序列化值。注意某些先前的 JSON的规范将JSON文本约束为对象或 阵列。仅生成对象或数组的实现 调用的JSON文本在所有方面都是可互操作的 实现将接受这些作为符合JSON文本。
但是,在最初询问此问题时,答案是:否The original specification said:
JSON文本是序列化对象或数组
因此,JSON文本中最外层的数据类型必须是对象或数组,它不能是字符串,布尔值,数字或任何其他数据类型。
答案 1 :(得分:0)
是的,根据ECMA-404 JSON数据交换标准。
来源:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
JSON文本是由符合JSON值语法的Unicode代码点形成的令牌序列。
然后,JSON值语法为:
JSON值可以是对象,数组,数字,字符串,true,false或null。
这与@quentin引用的RFC直接冲突。更新后的RFC是8259,其中指出:
请注意,某些先前的JSON规范将JSON文本限制为对象或数组。仅生成对象或数组的实现,其中 从所有实现都将它们接受为符合JSON的意义上说,要求JSON文本将是可互操作的。