{和[在json中使用json_encode在php中有什么不同

时间:2011-10-17 11:38:30

标签: php json

{和[在json

中]有什么不同

模型1:

"cell": { "id": "3961" }

模型2:

"cell": [ "id": "3961" ]

如何通过json_encode将模型1传输到2?

4 个答案:

答案 0 :(得分:3)

“model 2”无效JSON。 JSON允许具有命名属性的对象(您的“model 1”),但是数组可能没有命名键。

因此,json_encode无法输出“模型2”

答案 1 :(得分:2)

{是一个对象, [是一个数组。

请参阅official Docs

在您的情况下,第一个示例是一个普通的Object,其属性名为id。第二个示例是associative array,其索引名为id JSON没有关联数组。第二个例子是无效的JSON。

这是因为JSON是JavaScript对象通知而JavaScript不知道关联数组。相反,JavaScript允许您动态地向Object添加新属性,并允许您使用括号访问任何Object属性:Object['property']

因此,对象是JavaScript中的(种类)关联数组,因此是JSON。

由于json_encode() - 函数编码从提供的对象创建JSON-String,因此您需要传递一个对象而不是一个数组。

答案 2 :(得分:1)

php > echo json_encode(array('a', 'b'));
["a","b"]
php > echo json_encode(array('a' => 'A', 'b' => 'B'));
{"a":"A","b":"B"}

[ - >数字阵列
{ - > PHP中的关联数组,JavaScript中的对象

答案 3 :(得分:1)

您的模型2无效JSON。 JSON数组不能包含键,这是JavaScript中的对象({"key":"value"}

但是,如果要创建数组而不是对象,则可以将JSON字符串解码为PHP的关联数组(json_decode($json, TRUE))。