小编典典

最低有效 JSON 是多少?

all

我已经仔细阅读了 JSON
描述http://json.org/但我不确定我是否知道这个简单问题的答案。什么字符串是最小可能的有效 JSON?

  • "string"字符串是有效的 JSON 吗?
  • 42简单数字是有效的 JSON 吗?
  • true布尔值是有效的 JSON 吗?
  • {}空对象是有效的 JSON 吗?
  • []空数组是有效的 JSON 吗?

阅读 65

收藏
2022-06-21

共1个答案

小编典典

在撰写本文时,仅在RFC4627中描述了 JSON
。它将(在“2”开头)JSON 文本描述为序列化对象或数组。

这意味着在符合该标准的解析器和字符串化器中, 只有 {}并且是有效的、完整的 JSON 字符串。[]


然而,为了进一步混淆这个问题,Web 浏览器中可用的JSON对象(例如JSON.parse()和)在 ES5
中是标准化的
,并且清楚地定义了可接受的 JSON
文本,如下所示:JSON.stringify()

本规范中使用的 JSON 交换格式与 RFC 4627 所描述的完全相同,但有两个例外:

  • ECMAScript JSON 语法的顶级 JSONText 生成可以由任何 JSONValue 组成,而不是被限制为 RFC 4627 指定的
    JSONObject 或 JSONArray。

  • 剪断

这意味着JSON 对象接受 所有 JSON 值(包括字符串、空值和数字),即使 JSON 对象在技术上遵循 RFC 4627。

请注意,您可以因此在符合标准的浏览器中通过 对数字进行字符串化JSON.stringify(5),这将被另一个遵循 RFC4627
但没有上面列出的特定例外的解析器拒绝。例如,Ruby似乎就是这样一个例子, 它只 接受对象和数组作为 root。另一方面,PHP特别添加了一个例外,即“它还将编码和解码标量类型和 NULL”。

2022-06-21