Javascript 解码json时保留关联数组
例如,我有以下数组:-Javascript 解码json时保留关联数组,javascript,php,arrays,json,Javascript,Php,Arrays,Json,例如,我有以下数组:- $menu = array( "result"=>array( "food"=>array( "Nasi Padang", "Kentang Goreng", "Potato Wedges" ), "drink"=>array( "Bajigur", "AO",
$menu = array(
"result"=>array(
"food"=>array(
"Nasi Padang",
"Kentang Goreng",
"Potato Wedges"
),
"drink"=>array(
"Bajigur",
"AO",
"Sabun"
)
)
);
使用json\u encode
将上述代码变为:-
{
"result":{
"food":[
"Nasi Padang",
"Kentang Goreng",
"Potato Wedges"
],
"drink":[
"Bajigur",
"AO",
"Sabun"
]
}
}
正如您所看到的,result
array变成了一个对象,而不是以数组的形式存在,这可能是因为JavaScript没有现成的关联数组
那么,在执行json_decode
之后,是否仍然可以将结果作为数组处理,而不使用任何类似(数组)
编辑:
响应ANNT回复/注释,我在本地主机中尝试了以下代码
$test = new stdClass;
$test->count = 1337;
$test->page = 2;
$menu = array(
"test"=>$test,
"result"=>array(
"food"=>array(
"Nasi Padang",
"Kentang Goreng",
"Potato Wedges"
),
"drink"=>array(
"Bajigur",
"AO",
"Sabun"
)
)
);
$json = json_encode($menu);
echo print_r(json_decode($json, true));
结果
Array
(
[test] => Array
(
[count] => 1337
[page] => 2
)
[result] => Array
(
[food] => Array
(
[0] => Nasi Padang
[1] => Kentang Goreng
[2] => Potato Wedges
)
[drink] => Array
(
[0] => Bajigur
[1] => AO
[2] => Sabun
)
)
)
正如您所看到的,结果数组变成了一个对象,而不是以数组的形式存在,这可能是因为JavaScript没有现成的关联数组
这是因为在JSON中,普通对象的用途与PHP中的关联数组相同。唯一的区别是它不是有序的
JSON没有一个数据结构,它的命名属性也是有序的。要实现这一点,您需要使用对象数组,例如:
[
{ "name" : "foo", "value" : 1 },
{ "name" : "bar", "value" : 2 }
]
那么,在执行json_解码后,是否有任何方法可以将结果作为数组处理,而不使用任何类似(数组)的强制转换
发件人:
assoc:如果为TRUE,则返回的对象将转换为关联数组
因此,将json_decode
的第二个参数设置为true
json必须始终包装在{}
中,您不能有一个作为列表的json对象。您可以直接在JSON内部有一个列表,但是外部必须是{}
@Anant:I明白了..但是如果数组中也有真实对象(stdClass
),该怎么办?对象是否也会转换为关联数组?@DarielPratama函数(带true参数)会将其完全转换,而不是一半。所以,如果您在生成的数组中同时需要这两种代码,那么就手工编写一些代码