我已经仔细阅读了JSON描述http://json.org/,但是我不确定我是否知道简单问题的答案。最小可能的有效JSON是什么字符串?
"string"
42
true
{}
[]
在撰写本文时,JSON仅在RFC4627中进行了描述。它(在“2”开头)将JSON文本描述为序列化的对象或数组。
这意味着在符合该标准的解析器和字符串化器中, 只有 {}并且[]是有效的完整JSON字符串。
但是,ECMA-404的引入改变了这一点,更新的建议。
然而,为了进一步混淆该问题,Web浏览器中可用的JSON对象(例如JSON.parse()和JSON.stringify())在ES5中进行了标准化,并且明确定义了可接受的JSON文本,如下所示:
JSON
JSON.parse()
JSON.stringify()
本规范中使用的JSON交换格式与RFC 4627完全相同,但有两个例外:
ECMAScript JSON语法的顶级JSONText生成可以由任何JSONValue组成,而不是被限制为RFC 4627指定的JSONObject或JSONArray。
抢断
这意味着即使JSON对象在技术上遵循RFC 4627,JSON对象也可以接受所有JSON值(包括字符串,空值和数字)。
请注意,因此,您可以通过JSON.stringify(5),在符合标准的浏览器中对数字进行字符串化,该数字将被另一个遵循RFC4627的解析器拒绝,但该解析器没有上面列出的特定异常。例如,Ruby似乎就是这样一个例子,它 仅 接受对象和数组作为root,即“它还将对标量类型和NULL进行编码和解码”。
JSON.stringify(5)