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 に答える