{和[在json
中]有什么不同模型1:
"cell": { "id": "3961" }
模型2:
"cell": [ "id": "3961" ]
如何通过json_encode将模型1传输到2?
答案 0 :(得分:3)
“model 2”无效JSON。 JSON允许具有命名属性的对象(您的“model 1”),但是数组可能没有命名键。
因此,json_encode
无法输出“模型2”。
答案 1 :(得分:2)
{
是一个对象,
[
是一个数组。
请参阅official Docs。
在您的情况下,第一个示例是一个普通的Object,其属性名为
JSON没有关联数组。第二个例子是无效的JSON。id
。第二个示例是associative array,其索引名为id
。
这是因为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)
)。