2016-02-12 3 views
6

dies meine erste json Antwort ist und ich erhielt die Token-KlasseRetrofit 2, wie die Antwort von verschachtelten json Objekten erhalten (android)

{ 
"token": "I0ZmEifQ.CdbGWjkIYnuO29uJokCIGn8kXFbLbVp3gnlsEszagno" 
} 

pojo

public class TokenReceiver { 
    private String token; 

    public String getToken() { 
     return token; 
    } 
} 

die oben fein gearbeitet, aber wie die Antwort zu bekommen unter

{ 
    "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 
    } 
} 

der Statuscode 200 (OK) aber die Daten sind nicht g zum 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; 
} 

Dank im Voraus angebracht rste

+0

Ich hoffe, es wird Ihnen helfen! Öffnen Sie einfach http://www.jsonschema2pojo.org/ und wählen Sie Quellentyp: JSON und Annotation style: GSON und geben Sie dort den vollen JSON aus. Sie erhalten dann die volle Pojo-Fähigkeit, die Sie in Ihren Projektcode einfügen können. und die POJO-Klasse, die Sie als CallBack in Retrofit setzen können! – Rahul

Antwort

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; 
} 

Inner Antwort für Sie können arbeiten von unten erwähnt werden.

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

vielen Dank :) Antwort obj = response.body() kann ich dieses Objekt (Obj) nur in RetroRes OnResponse-Methode verwenden? –

+0

ja Sie sind korrekt..Sie sollten Root-Objekt der Antwort senden - neuer Rückruf () – Boopathi

+0

Wie kann ich dieses Objekt außerhalb der OnResponse-Methode verwenden? –

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; 
} 
} 

Above Code

+0

Danke dude Klassenname obj = response1.body(); // Log.d zuweisen ("MainActivity2", "email =" + response1.body(). user.getEmail()); Log.d ("MainActivity2", "email =" + obj.user.getEmail()); nach dem Zuweisen, welches die richtige Methode ist, um anzurufen ... beide drucken die Email :) –

+0

Ok. Wenn es funktioniert bedeutet, die Antwort zu akzeptieren, kann es hilfreich sein für jemanden – MathaN

Verwandte Themen