这是我的多维数组..我知道如何将数组编码为json但没有得到实际的json预期的json结果
array (
1 =>
array (
'text' => 'Dashboard',
'spriteCssClass' => 'rootfolder',
'expanded' => 'true',
'id' => '1',
'item_name' => 'Dashboard',
'menu_type' => 'item',
'parent' => '0',
'items' =>
array (
9 =>
array (
'text' => 'Application',
'spriteCssClass' => 'html',
'id' => '9',
'item_name' => 'Application',
'menu_type' => 'header',
'parent' => '1',
'items' =>
array (
),
),
),
),
)
将其编码为json后,我得到以下结果
for encodin我使用了json_encode($array);
{
"1": {
"text": "Dashboard",
"spriteCssClass": "rootfolder",
"expanded": "true",
"id": "1",
"item_name": "Dashboard",
"menu_type": "item",
"parent": "0",
"items": {
"9": {
"text": "Application",
"spriteCssClass": "html",
"id": "9",
"item_name": "Application",
"menu_type": "header",
"parent": "1",
"items": {}
}
}}}
我想要以下编码的json
{
"text": "Dashboard",
"spriteCssClass": "rootfolder",
"expanded": "true",
"id": "1",
"item_name": "Dashboard",
"menu_type": "item",
"parent": "0",
"items": [
{
"text": "Application",
"spriteCssClass": "html",
"id": "9",
"item_name": "Application",
"menu_type": "header",
"parent": "1",
"items": {}
}]
}
我几乎尝试了一切,但没有得到我预期的json结果 我想从json中删除数组索引,如“1”{并且还要在每个项目之后添加“[”这个:列
答案 0 :(得分:1)
看起来你只想json_encode($yourData[1])
而不只是json_encode($yourData)
...
答案 1 :(得分:1)
您的数组未被索引,因此json_encode假定它是一个关联数组。
如果你为数组编制索引,你应该得到预期的结果,或者甚至可以完全删除索引赋值:
array (
array (
'text' => 'Dashboard',
'spriteCssClass' => 'rootfolder',
'expanded' => 'true',
'id' => '1',
'item_name' => 'Dashboard',
'menu_type' => 'item',
'parent' => '0',
'items' =>
array (
9 =>
array (
'text' => 'Application',
'spriteCssClass' => 'html',
'id' => '9',
'item_name' => 'Application',
'menu_type' => 'header',
'parent' => '1',
'items' =>
array (
),
),
),
),
)
EDIT ***
删除所有数字索引/将所有“非关联”转换为正常使用:
function normaliseArray($arr,$recurse=True) {
if (!is_array($arr))
return $arr;
if (count(array_filter(array_keys($arr), 'is_numeric')) == count($arr))
$arr = array_values($arr);
if ($recurse) {
foreach($arr as $k => $a) {
$arr[$k] = normaliseArray($a,$recurse);
}
}
return $arr;
}
json_encode(normaliseArray($array));
试试。
答案 2 :(得分:0)
json_encode
将按原样对其进行编码。您可以做的最好的事情是强制数组从0
开始,这与[]
相同:
$array = array_values($array);
$array[0]['items'] = array_values($array[0]['items']);