为什么我的多维数组不能编码为JSON?

时间:2013-01-15 13:34:29

标签: php json

我在php中有一个看起来像这样的多维数组

[[4,1,4,2,131,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,1,0,0,0],[0,0,5,0,0,0,0]]

当我使用php的json_encode对其进行编码,并将其作为ajax响应的一部分发送时,它会转换为字符串

"[[4,1,4,2,131,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,1,0,0,0],[0,0,5,0,0,0,0]]"

..而不是数据结构本身。

json_encode正在接收一个如下所示的数组:

array(
   'arg' => 'data',
   'arg2' => array(
       'multi' => [[4,1,4,2,131,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,1,0,0,0],[0,0,5,0,0,0,0]]
    )
)

这是为什么?以及如何转换此数据属性需要做什么?

编辑:添加了数据结构的json_encode()结果:

array(4) {
  ["type"]=>
  string(11) "1"
  ["msg"]=>
  string(0) ""
  ["data"]=>
  array(3) {
    ["multi"]=>
    string(81) "[[3,1,4,2,1,1,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,0,0,0,0],[0,0,5,0,0,0,0]]"
}
}

谢谢你们!

1 个答案:

答案 0 :(得分:1)

问题是因为特定结构在json_encode上运行了两次。下面是通过json_encode两次传递该数组的json结果,只有一次。通过json_encode将数组传递两次将使该数组变为字符串。

两次

{"type":"1","msg":"","data":{"multi":"[[3,1,4,2,1,1,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,0,0,0,0],[0,0,5,0,0,0,0]]"}

单次

{"type":"1","msg":"","data":{"multi":[[3,1,4,2,1,1,1],[4,2,4,5,2,2,2],[2,2,7,0,3,3,3],[5,0,3,0,0,0,0],[0,0,5,0,0,0,0]]}