我已经在SO中看到了很多复杂的问题,无论某个复杂的结构是否被视为有效的JSON。
但是在频谱的另一端呢?
"12345"
以上是有效的JSON吗?
是的,在大多数情况下。这是表示JSON值的有效JSON语法。
对此的困惑来自于Douglas Crockford的RFC 4627,它最初application/json于2006年定义了互联网媒体类型。它说:
application/json
JSON文本是序列化的对象或数组。
但是,正如Crockford在2013年的帖子中所解释的(不幸的是,其余的Google+删除了它):
JSON只是一种语法,该语法包括数字和字符串。JSON的使用必须具有更大的限制性。RFC-4627是一种可能的用法,并且从未打算成为JSON本身的标准。
示例字符串是有效的JSON值,但是将其用作application/jsonHTTP响应的完整“ JSON文本”正文可能是不正确的。但是,这不再是真的:RFC-4627在2014年随RFC 7159的发布而废弃,它使您可以使用任何JSON值:
JSON文本是序列化的值。请注意,以前的某些JSON规范将JSON文本限制为对象或数组。
2013年还发布了“ JSON本身标准”,称为ECMA-404,并且在ECMAScript(JavaScript)规范ECMA-262的 5.1版中也定义了JSON 。这些规范和大多数解析器允许将任何JSON值作为完整的JSON文本,即使它只是一个简单的字符串也是如此。