2016-11-04 113 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