2012-02-29 3 views
0

Je veux obtenir des données du fichier php à Android en utilisant JSON. Ceci est mon code:Android: JSONObject ne peut pas être converti en JSONArray

.... 
HttpEntity e = r.getEntity(); 
String data = EntityUtils.toString(e); 
JSONArray timeline = new JSONArray(data); 
JSONObject last = timeline.getJSONObject(0); 
return last; 

Quand je déboguer le programme il y a JSONException sur cette ligne:

JSONObject last = timeline.getJSONObject(0); 

données est {"a":1,"b":2,"c":3,"d":4,"e":5} et l'exception est:

org.json.JSONException: Value {"d":4,"e":5,"b":2,"c":3,"a":1} of type org.json.JSONObject cannot be converted to JSONArray 
+0

C'est l'objet JSON '{" a ": 1," b ": 2," c ": 3," d ": 4," e ": 5}'. Ce '[{" a ": 1," b ": 2," c ": 3," d ": 4," e ": 5}]' est JSONArray avec 1 JSONObject – SERPRO

Répondre

1

Dans les tableaux Json sont décrit en utilisant []. Vous définissez ici un objet avec cinq attributs.

+0

Merci beaucoup pour l'aide! – user1240287

+0

[Paul Polo] (http://stackoverflow.com/users/1168612/paul-polo) [commentaires] (http://stackoverflow.com/suggested-edits/247620): Je pense que vous faites référence à '{ } 'au lieu du' [] '? S'il vous plaît voir ci-dessus – Rup

+0

@ Rup Eh bien, l'erreur était que j'ai parlé de tableaux et non d'objets. Merci de l'avoir signalé –

2

Le message d'exception est assez explicite et un coup d'œil au JSON syntax diagrams devrait être illustratif. La chaîne JSON que votre code reçu est:

{"a":1,"b":2,"c":3,"d":4,"e":5} 

Cette chaîne représente un objet , pas un tableau. Un exemple d'un tableau serait:

[1, 2, 3, 4, 5] 

ou même ceci:

[{"a":1,"b":2,"c":3,"d":4,"e":5}] 

Notez que le démarrage et la fermeture entre parenthèses.

Je pense que vous trouverez que l'emplacement d'exception est légèrement trompeur. Je ne sais pas si c'est le résultat d'une sorte d'initialisation paresseux ou autre chose, mais je crois que la cause est en fait cette ligne:

JSONArray timeline = new JSONArray(data); 

Depuis la chaîne data représente un objet JSON et non un tableau , cette opération est clairement impossible.

+0

Merci beaucoup pour l'aide! – user1240287

0
JSONArray timeline = new JSONArray(data); 
// change JSONArray to JSONObject 

JSONObject timeline = new JSONObject(data);// Like This 

Vos données JSON ne sont pas des matrices.

0

Votre réponse json est sous forme d'objet, pas sous forme de tableau. Vous devez donc simplement analyser votre objet json. Supposons que "data" soit la balise JSONObject en réponse. Voici la méthode d'analyse syntaxique:

  HttpEntity e = r.getEntity(); 
      String result = EntityUtils.toString(e); 
      JSONObject response=new JSOBObject(result); 
      JSONOBject Data=response.getJSONObject("data"); 
      int a=Data.getInt("a"); 
      int b=Data.getInt("b"); 
      int c=Data.getInt("c"); 
      int d=Data.getInt("d"); 
      int e=Data.getInt("e"); 

Merci.

Questions connexes