我想给出一个简单的true响应,但根据各种 JSON 解析器,这不是有效的JSON:
true
Run Code Online (Sandbox Code Playgroud)
但是,true在编码和解码时,PHP和Javascript的行为类似于"true"确实是有效的JSON :
PHP的
echo json_encode( true ); // outputs: true
echo json_decode( true ); // outputs: 1
echo gettype(json_decode( true )); // outputs: boolean
Run Code Online (Sandbox Code Playgroud)
jQuery-
JSON.stringify( true ); // outputs: true
jQuery.parseJSON( true ); // outputs: true
typeof jQuery.parseJSON( true ); // outputs: boolean
Run Code Online (Sandbox Code Playgroud)
那么发送true格式为JSON 的响应的正确方法是什么?验证人都错了吗?
Den*_*ret 20
来自RFC:
JSON文本是序列化对象或数组.
Run Code Online (Sandbox Code Playgroud)JSON-text = object / array
大多数解析器不接受任何不是对象或数组的root用户.只有不太严格的解析器才会接受您的JSON字符串只包含true.
所以你的选择是
{"result":true}或数组中:[true]更新:
情况发生了变化.较新版本的JSON规范(请参阅此规范)明确接受任何序列化值作为文档的根目录:
JSON文本是序列化值.请注意,某些先前的JSON规范将JSON文本约束为对象或数组.只生成调用JSON文本的对象或数组的实现将是可互操作的,因为所有实现都将接受这些作为符合JSON文本.
这意味着使用布尔值作为唯一值现在在法律上是可接受的.但是当然并非所有正在使用的库都会更新,这意味着使用除了对象或数组之外的任何其他库可能仍然存在问题.
| 归档时间: |
|
| 查看次数: |
30707 次 |
| 最近记录: |