2013-02-14 4 views
1

Il y a des tableaux dans des tableaux:Parse android JSON après optimize php json_encode

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

Après json_encode sur andorid je reçois les suivantes:

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

est-il un bon moyen pour analyser ce que Array[Array[]] sur Android?

+0

pouvez-vous nous montrer tout le morceau de code PHP qui commence avec le tableau en entrée et se termine par la chaîne contenant les caractères '' '/' »'. Il se passe quelque chose de vraiment bizarre, mais je ne peux pas le voir d'après ce que vous avez posté. – SDC

+0

Je n'ai pas accès au script php. L'auteur me montre l'impression de debug de tableau avant et après json_encode. http://www.php.net/manual/fr/function.json-encode.php Exemple de tableau séquentiel –

+0

Bien, 'json_decode' de php ne mettra pas les caractères' ''/'» 'dedans, donc je ' Je me demande d'où ils viennent. Ils ne sont évidemment pas standards. Json standard devrait avoir '' 'caractères pour les citations – SDC

Répondre

0

Cela se produit parce que vous avez des index non contigus. Si vous « renumérotez » le tableau avec

$a = array_values($a); 

vous aurez

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

et par conséquent json_encode créerez

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

Si vous voulez avoir trop des réseaux internes, vous devez assurez-vous que les réseaux internes ont également des indices contigus.

Si vous ne pouvez pas modifier le code PHP, le seul moyen est d'analyser cela en tant qu'objet JSON et de parcourir les propriétés en utilisant keys() et de choisir les valeurs individuellement.

+0

Je peux seulement analyser le résultat sur android.php script ne peut pas changer –

+0

@AlexandrSulimov Mais votre collègue peut réparer son code.Si pas, vous devez analyser comme un objet, s'il vous plaît voir la mise à jour –

+0

Il n'y a pas de raison de changer le script php.C'est un moyen par défaut dans php json_encode sur un tableau séquentiel.Je cherche un moyen pour un petit codage dans android.Le tableau de niveau supérieur est JSSONObject deuxième niveau JSONArray [0], JSSONObject [1] , JSSONObject [2], JSSONObject [4]., Mais si chage quatrième élément de [4] à [3] json_encode optimiser et de haut niveau Array être un JSONArray –