2016-02-19 5 views
0

Je suis en train d'obtenir des articles sur une API, qui ressemble à ceci:Rénovation - comment ignorer le nom de la table

{ "picklist": [ 
{ "name": "Abkhazia", "id": "a0511000002gxF1AAI" }, 
{ "name": "Afghanistan", "id": "a0511000002gxF2AAI" }, 
{ "name": "Akrotiri and Dhekelia", "id": "a0511000002gxF3AAI" }, 
{ "name": "Albania", "id": "a0511000002gxF5AAI" }, 
{ "name": "Algeria", "id": "a0511000002gxF6AAI" }, 
{ "name": "American Samoa", "id": "a0511000002gxF7AAI" } 
] } 

J'ai essayé de chercher de cette façon:

public interface MyAPI { 
    @GET("/?country=true") 
    Call<List<User>> getUsers(); 
} 

Mais parce que la table a un nom, il lève une exception (au moins je pense que ce pourquoi):

java.lang.IllegalStateException: 
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3 path $ 

Comment puis-je résoudre ce problème?

+0

Ajoutez votre entité utilisateur –

+0

chèque postier avec url et params. Il doit y avoir un problème avec votre réponse URL ou serveur. –

Répondre

2

Vous devez utiliser une réponse personnalisée pour ce cas:

public interface MyAPI { 
    @GET("/?country=true") 
    Call<APIResponse> getUsers(); 
} 

class APIResponse { 
    @JsonProperty("picklist") List<User> userList; 
} 

@JsonProperty est un Jackson annotation. Si vous ne disposez pas de ce que vous annotations pouvez toujours changer le APIResponse à:

class APIResponse { 
    List<User> picklist; 
} 
+0

^Qui l'a résolu. Merci :) – Haruspik

+0

Votre bienvenue, je suis content que cela a aidé :) – FlyingPumba