2014-02-26 105 views
1

這是我的多維array..i知道如何編碼陣列JSON,但其編碼爲JSON我得到以下結果 後沒有得到實際的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 (
     ), 
    ), 
    ), 
), 
) 

對於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」 {也希望每一個項目後添加「[」這個刪除數組索引:列

回答

1

它看起來像你只是想要json_encode($yourData[1])而不是僅僅json_encode($yourData) ...

+0

我知道如何編碼,但我希望我的格式化JSON這我不getting..please看到我的編輯後 – Sachin

1

你的數組不是0索引,因此json_encode假定它是一個assoc數組。

如果0指數的數組,你應該得到預期的結果,或者甚至completelely刪除索引分配:

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 (
     ), 
    ), 
    ), 
), 
) 

編輯***

刪除所有的數字指標/轉換所有「non-assoc」正常使用:

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)); 

試試。

+0

如何刪除像上面的數組索引 – Sachin

+0

..不要在您的頂級數組中使用「1 =>」部分。或者使用json_encode(array_values($ array)); –

+0

使用arrays_values函數後不刪除所有的索引,只刪除第一個元素索引 – Sachin

0

json_encode將按原樣編碼。你能做的最好是迫使陣列在0開始這將是一樣[]

$array = array_values($array); 
$array[0]['items'] = array_values($array[0]['items']);