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