Question

Je développe une application Android et j'accès à un service web REST qui retourne une JSON. Ce JSON Je veux mettre dans POJO mais je pense que je manque quelque chose comme ça ne fonctionne pas.

Le JSON retuned est comme suit:

[{ "CategoryName": "Food", "Id": 1}, { "CategoryName": "Car", "Id": 2}, { "CategoryName": "House", "Id": 3 }, { "CategoryName": "travail", "Id": 4}]

est retournée dans la variable de réponse

  String response = client.getResponse();

Et maintenant, je procédez comme suit:

GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();

JSONObject j;
MainCategories cats = null;

try
{
    j = new JSONObject(response);
    cats = gson.fromJson(j.toString(), MainCategories.class);

}
catch(Exception e)
{
    e.printStackTrace();
}

L'erreur que je reçois est:

  

09-02 07: 06: 47,009:   WARN / System.err (568):   org.json.JSONException: Valeur   [{ "Id": 1, "CategoryName": "Food"}, { "id": 2, "CategoryName": "Car"}, { "id": 3, "CategoryName": "House"}, { "Id": 4, "CategoryName": "travail"}]   de type org.json.JSONArray ne peut pas être   converti en JSONObject   09-02 07: 06: 47,029:   WARN / System.err (568): à   org.json.JSON.typeMismatch (JSON.java:107)

Voici les objets POJO MainCategories.java

public class MainCategories {


 private List<CategoryInfo> category;


 public List<CategoryInfo> getCategory() {
     if (category == null) {
         category = new ArrayList<CategoryInfo>();
     }
     return this.category;
 }

}

CategoryInfo.java

public class CategoryInfo {

 public String categoryName;
 public Integer id;

 public String getCategoryName() {
     return categoryName;
 }


 public void setCategoryName(String value) {
     this.categoryName = ((String) value);
 }

 public Integer getId() {
     return id;
 }

 public void setId(Integer value) {
     this.id = value;
 }

}

Pour accéder au service Web que j'utilise la classe de: http://lukencode.com/2010/04/27/calling-web-services-in-android-using-httpclient/

S'il vous plaît aidez-moi que je suis coincé pendant 2 jours maintenant et ne peut pas comprendre comment continuer. J'ai trouvé quelques sujets ici mais n'a toujours pas trouvé un moyen de contourner. Merci beaucoup.

Était-ce utile?

La solution

Top entité de niveau dans votre chaîne JSON est JSONArray pas JSONObject, alors que vous essayez de l'analyser comme objet. Créer un tableau de la chaîne et l'utiliser.

JSONArray array = new JSONArray(response);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top