2016-11-04 85 views
1

我有一個數組包含JSON在一些索引,我有將其解碼如何JSON解碼的多維陣列

例如:

這是JSON

$json = {"Lavel1":"This is Lavel1","LavelLoop":"{\"Lavel2\":\"This is Lavel2\",\"LavelLoop\":\"{\\\"Lavel3\\\":\\\"This is Lavel3\\\",\\\"LavelLoop\\\":[]}\"}"} 

如果是第一次解碼,那麼它給這個數組

$array = json_decode($json); 

// this is the output 
Array 
(
    [Lavel1] => This is Lavel1 
    [LavelLoop] => {"Lavel2":"This is Lavel2","LavelLoop":"{\"Lavel3\":\"This is Lavel3\",\"LavelLoop\":[]}"} 
) 

所以我有解碼了三次,但我不能假設它有多少次JSON包含

慾望輸出應該是這樣的

Array 
(
    [Lavel1] => This is Lavel1 
    [LavelLoop] => Array 
     (
      [Lavel2] => This is Lavel2 
      [LavelLoop] => Array 
       (
        [Lavel3] => This is Lavel3 
        [LavelLoop] => Array 
         (
         ) 
       ) 
     ) 
) 

我試過循環,但它不工作,它給了我像一些索引顯示錯誤n me empty

+2

'$結果= json_decode( '<多維陣列>',TRUE);' – Haridarshan

+0

你有沒有嘗試過,因爲我知道這個功能,但JSON包含它自我一個子JSON – User97798

+0

我已更新的問題看看 – User97798

回答

1

我已經更新了答案看看再次

$json = '{"Lavel1":"This is Lavel1","LavelLoop":"{\"Lavel2\":\"This is Lavel2\",\"LavelLoop\":\"{\\\"Lavel3\\\":\\\"This is Lavel3\\\",\\\"LavelLoop\\\":[]}\"}"}'; 

$array = nested_jsonDecode($json, true); 

print_r($array); 


function nested_jsonDecode($string, $is_array = true){ 
    return is_bool($is_array) 
     ? json_decode(str_replace(['\\','"[',']"','"{', '}"'], ['','[',']','{', '}'],$string), $is_array) 
     : ''; 
} 

輸出

Array 
(
    [Lavel1] => This is Lavel1 
    [LavelLoop] => Array 
     (
      [Lavel2] => This is Lavel2 
      [LavelLoop] => Array 
       (
        [Lavel3] => This is Lavel3 
        [LavelLoop] => Array 
         (
         ) 

       ) 

     ) 

) 
0

LaravelLoop是一個字符串,而不是一個對象。對所有人來說都是這樣。刪除引號,它會解碼罰款。

+0

是的,你是對的,它是JSON。我也必須解碼它甚至到lavelLoop包含相同的 – User97798

+0

你可能沒有看到JSON字符串正確地看到這首先如果你刪除引用JSON可能會中斷和解碼後的結果將爲空或假 –

+0

這是一堆json對象周圍有引號。這導致它們是字符串,因此爲什麼每個人都在使用json_decode一堆。它不是嵌套的對象,而是一堆嵌套的字符串。刪除雙引號,你只需要一個json_decode調用 – Jaime