1

数组中有数组:

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

json_encodeandorid之后,我得到以下信息:

{
 «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

有没有像Array[Array[]]在Android上一样解析这个的好方法?

4

1 回答 1

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()并单独选择值来迭代属性。

于 2013-02-14T14:32:53.153 回答