优化php json_encode之后的android解析json

时间:2013-02-14 13:57:51

标签: android json

数组中有数组:

Array 
(
 [0] => Array (  [0] => v1  [1] => v2  [2] => v3 )
 [1] => Array (  [0] => v1  [1] => v2  [3] => v3 )
 [2] => Array (  [0] => v1  [1] => v2  [10] => v3 )
 [4] => Array (  [0] => v1  [1] => v2  [3] => v3 )
)

在android上json_encode之后我得到以下内容:

{
 «0»: [ «v1», «v2», «v3» ],
 «1»: { «0»:«v1», «1»:«v2», «3»:«v3», },
 «2»: { «0»:«v1», «1»:«v2», «10»:«v3» },
 «4»: { «0»:«v1», «1»:«v2», «3»:«v2» }
}

JSONArray jList = jb.getJSONArray(response); //exception is not array

有没有一种好方法可以在Android上解析为Array[Array[]]

1 个答案:

答案 0 :(得分:0)

这是因为您有不连续的索引。如果使用

“重新编号”数组
$a = array_values($a);

你会有

Array 
(
    [0] => Array (  [0] => v1  [1] => v2  [2] => v3 )
    [1] => Array (  [0] => v1  [1] => v2  [3] => v3 )
    [2] => Array (  [0] => v1  [1] => v2  [10] => v3 )
    [3] => Array (  [0] => v1  [1] => v2  [3] => v3 )
)

因此json_encode将创建

[ ["v1", "v2", "v3"], { "0": "v1", ...}, ... ]

如果你想拥有内部数组,你必须确保内部数组也有连续的索引。

如果您无法更改PHP代码,唯一的方法是将其解析为JSON对象,并使用keys()迭代属性并单独选择值。