2016-02-12 4 views
6

ceci est ma première réponse JSON et j'ai obtenu le jetonRénovation 2 comment obtenir la réponse des objets JSON imbriqués (android)

{ 
"token": "I0ZmEifQ.CdbGWjkIYnuO29uJokCIGn8kXFbLbVp3gnlsEszagno" 
} 

classe POJO

public class TokenReceiver { 
    private String token; 

    public String getToken() { 
     return token; 
    } 
} 

ci-dessus a bien fonctionné, mais comment pour obtenir la réponse ci-dessous pour

{ 
    "user": { 
    "id": 1, 
    "first_name": "Super", 
    "last_name": "Admin", 
    "email": "[email protected]", 
    "mobile_no": 2147483647, 
    "created_at": "2016-01-21 00:00:00", 
    "updated_at": "2016-01-21 00:00:00", 
    "user_role_id": 1 
    } 
} 

le code d'état est de 200 (OK) mais les données ne sont pas g ise attaché au POJO

public class User { 

    @SerializedName("id") 
    @Expose 
    private int id; 

    @SerializedName("first_name") 
    @Expose 
    private String first_name; 

    @SerializedName("last_name") 
    @Expose 
    private String last_name; 

    @SerializedName("email") 
    @Expose 
    private String email; 

    @SerializedName("mobile_no") 
    @Expose 
    private String mobile_no; 

    @SerializedName("created_at") 
    @Expose 
    private String created_at; 

    @SerializedName("updated_at") 
    @Expose 
    private String updated_at; 

    @SerializedName("user_role_id") 
    @Expose 
    private int user_role_id; 
} 

merci à l'avance

+0

J'espère que ça va vous aider! il suffit d'ouvrir ce http://www.jsonschema2pojo.org/ et sélectionnez le type de source: JSON et le style d'annotation: GSON et vider votre plein JSON là, vous aurez plein pojo prêt, que vous pouvez coller dans votre code de projet. et cette classe POJO que vous pouvez définir comme CallBack dans Retrofit! – Rahul

Répondre

7
public class Response{ 
    @SerializedName("user") 
    @Expose 
    private User user; 
    } 

public class User{ 

@SerializedName("id") 
@Expose 
private int id; 

@SerializedName("first_name") 
@Expose 
private String first_name; 

@SerializedName("last_name") 
@Expose 
private String last_name; 

@SerializedName("email") 
@Expose 
private String email; 

@SerializedName("mobile_no") 
@Expose 
private String mobile_no; 

@SerializedName("created_at") 
@Expose 
private String created_at; 

@SerializedName("updated_at") 
@Expose 
private String updated_at; 

@SerializedName("user_role_id") 
@Expose 
private int user_role_id; 
} 

Réponse intérieure peut être consulté par ci-dessous mentionné.

response.getUser().getId(); 
+0

merci beaucoup :) Réponse obj = response.body() puis-je utiliser cet objet (obj) seulement dans la méthode onResponse de retrofit? –

+0

oui vous êtes correct..vous devriez envoyer l'objet racine de réponse-- nouveau rappel () – Boopathi

+0

comment puis-je utiliser cet objet en dehors de la méthode onResponse? –

1
Public class classname{ 

public User user; 
class User{ 

@SerializedName("id") 
@Expose 
private int id; 

@SerializedName("first_name") 
@Expose 
private String first_name; 

@SerializedName("last_name") 
@Expose 
private String last_name; 

@SerializedName("email") 
@Expose 
private String email; 

@SerializedName("mobile_no") 
@Expose 
private String mobile_no; 

@SerializedName("created_at") 
@Expose 
private String created_at; 

@SerializedName("updated_at") 
@Expose 
private String updated_at; 

@SerializedName("user_role_id") 
@Expose 
private int user_role_id; 
} 
} 

code ci-dessus fonctionne pour vous

+0

Merci dude Nom de classe obj = response1.body(); // affecte Log.d ("MainActivity2", "email =" + response1.body(). user.getEmail()); Log.d ("MainActivity2", "email =" + obj.user.getEmail()); après avoir assigné quelle est la bonne méthode pour appeler ... les deux imprime l'email :) –

+0

Ok. Si ça marche signifie accepter la réponse peut être utile pour quelqu'un – MathaN