javascript - 最低有效 JSON 是多少?

标签 javascript json validation

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

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

最佳答案

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

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

然而,ECMA-404 的引入改变了这一点,更新的建议 can be read here .我也有written a blog post关于这个问题。


为了进一步混淆这个问题,JSON 对象(例如 JSON.parse()JSON.stringify())在网络浏览器是 standardised in ES5 ,并且清楚地定义了可接受的 JSON 文本,如下所示:

The JSON interchange format used in this specification is exactly that described by RFC 4627 with two exceptions:

  • The top level JSONText production of the ECMAScript JSON grammar may consist of any JSONValue rather than being restricted to being a JSONObject or a JSONArray as specified by RFC 4627.

  • snipped

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

请注意,您可以因此在符合标准的浏览器中通过 JSON.stringify(5) 对数字进行字符串化,这将被另一个遵循 RFC4627 但没有具体规定的解析器拒绝上面列出的异常(exception)。 Ruby,例如 would seem to be one such example which only accepts objects and arrays as the root .另一方面,PHP specifically adds the exception即“它还将对标量类型和 NULL 进行编码和解码”。

关于javascript - 最低有效 JSON 是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419428/

相关文章:

javascript - React JS - 在数组末尾停止无限滚动

javascript - 想使用 Sequelize 从对象数组中删除任务

ios - Swift 根据 JSON 值处理最喜欢和最不喜欢的按钮

javascript - 检查字符串是否包含所有子字符串的最快方法

php - PHP 和 JavaScript 表单验证脚本的问题

javascript - 我如何强制客户端刷新在 Node.js 中使用 Jade 呈现的 JavaScript/CSS 文件?

javascript - 在 Javascript 中推送对象

Java - 从 JSON 中提取数组字符串并转换为 JSON 格式

javascript - 将jquery数据存储在html元素中

javascript - 表单仅使用javascript验证一个字段