【发布时间】:2013-06-06 06:33:44
【问题描述】:
来自JSON website:
JSON 建立在两种结构之上:
- 名称/值对的集合。在各种语言中,这被实现为对象、记录、结构、字典、哈希表、键控列表或关联数组。
- 值的有序列表。在大多数语言中,这被实现为数组、向量、列表或序列。
现在我有一个返回布尔值的示例服务(这是在 PHP 中,但它可以是任何服务器端语言):
<?php
header('Content-Type: application/json');
echo 'true';
exit;
当使用 ajax 请求此页面时(例如使用 jQuery):
$.ajax({
url: 'service.php',
dataType: 'json',
success: function (data) {
console.log(data);
console.log(typeof data);
}
});
结果是:
-> true
-> boolean
我的问题是为什么允许将 boolean 作为 JSON 返回。 和 JSON 定义不冲突吗?
也
我还可以在我的服务中返回 number 或 string:
<?php
header('Content-Type: application/json');
echo '2013';
exit;
结果是:
-> 2013
-> number
对于字符串:
<?php
header('Content-Type: application/json');
echo '"What is going on?"';
exit;
结果是:
-> What is going on?
-> string
【问题讨论】:
-
它作为json返回以允许跨站点ajax请求
-
如果你只能返回数组或对象,这些集合的内容会是什么?你最终需要标量对象作为叶子。
-
@Barmar - 根据RFC,“JSON 文本”只能是数组或对象。但是,在该数组或对象中,您可以使用任何其他 JSON 数据类型。
-
相关(如果不重复):stackoverflow.com/q/18419428/11683
标签: javascript ajax json