我在SO中看到了很多复杂的问题,不管某些复杂的结构是否被认为是有效的JSON.
但是在光谱的另一端呢?
"12345"
Run Code Online (Sandbox Code Playgroud)
以上是有效的JSON吗?
小智 66
它是表示JSON 值的有效JSON语法.是否是有效的JSON 文本(用于指代JSON生成器的完整输出的正式术语)取决于上下文.
在道格拉斯克罗克福德 2006年发布的RFC 4627中(定义了application/json互联网媒体类型):
JSON文本是序列化对象或数组.
因此,使用该简单字符串作为具有互联网媒体类型的HTTP响应的完整主体是不合法的application/json.
但是,JSON规范已在2014年发布的RFC 7159以及ECMA-262的版本5.1 和ECMA-404中进行了更新.新规范没有上述限制,因此将简单字符串视为有效的JSON文本.在RFC 7159中:
JSON文本是序列化值.请注意,某些先前的JSON规范将JSON文本约束为对象或数组.只生成调用JSON文本的对象或数组的实现将是可互操作的,因为所有实现都将接受这些作为符合JSON文本.
来自json.org的 JSON 值:
Rob*_*een 15
截至2014年,RFC 7159废弃旧的JSON RFC,并声明任何 JSON值都是有效的JSON文本和有效的application/json内容 - 包括字符串.但是,它还指出了旧JSON实现的不兼容问题:
请注意,某些先前的JSON规范将JSON文本约束为对象或数组.只生成调用JSON文本的对象或数组的实现将是可互操作的,因为所有实现都将接受这些作为符合JSON文本.
它是一个有效的JSON字符串,但不是有效的JSON文本(即JSON文件).
请参阅JSON规范,其中说:
JSON文本是序列化对象或数组.
所以你可以在一些JSON中使用它,但它本身不是一个完整的JSON文件.
(值得注意的是,规范定义了一个JSON解析器:
JSON解析器将JSON文本转换为另一种表示形式.
我的<em>)
有关第二种意见,请参阅JSON Lint:
Parse error on line 1:
"12345"
^
Expecting '{', '['
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23896 次 |
| 最近记录: |