2017-02-05 4 views
0

Ich bin Anfänger bei diesem. Ich versuche, Antwort von POST-Anfrage in einem JSONarray zu erhalten. Und wenn ich versuche, eine Antwort auf das Array zu bekommen, kann ich das JSON-Objekt bekommen. dies ist mein POJORetrofit POST Anfrage Antwort in JSON-Array

User.Java

public class User { 
    @SerializedName("username") 
    @Expose 
    private String user; 

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

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

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

    @SerializedName("data") 
    @Expose 
    private ArrayList<Datum> data; 

    public User(String user, String pass, String mesaage){ 
     this.user = user; 
     this.pass = pass; 
     this.message = message; 
    } 

    public String getStatus() { 
     return status; 
    } 
    public ArrayList<Datum> getData() { 
     return data; 
    } 

    public void setData(ArrayList<Datum> data) { 
     this.data = data; 
    } 
    public String getMessage() { 
     return message; 
    } 
} 

Datum.Java:

public class Datum { 
    @SerializedName("id") 
    @Expose 
    private String id; 

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

    @SerializedName("mk_nama") 
    @Expose 
    private String mkNama; 

    public String getId() { 
     return id; 
    } 

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

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getMkNama() { 
     return mkNama; 
    } 

    public void setMkNama(String mkNama) { 
     this.mkNama = mkNama; 
    } 
} 

das ist meine Schnittstelle

public interface UserClient { 
@FormUrlEncoded 
@POST("login") 
Call<User> loginAccount (
          @Field("user") String username, 
          @Field("pass") String password 
);} 

und das ist mein MainActivity

private void sendNetworkRequest(String username, String password) { 

    Retrofit.Builder builder = new Retrofit.Builder() 
      .baseUrl("https://prht.herokuapp.com/api/") 
      .addConverterFactory(GsonConverterFactory.create()); 
    Retrofit retrofit = builder.build(); 

    UserClient client = retrofit.create(UserClient.class); 
    Call<User> call = client.loginAccount(username,password); 
    call.enqueue(new Callback<User>() { 
     @Override 
     public void onResponse(Call<User> call, Response<User> response) { 
      Toast.makeText(LoginActivity.this, response.body().getData(),Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onFailure(Call<User> call, Throwable t) { 
      Toast.makeText(LoginActivity.this, "BAD ERROR" , Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

Ich kann das Objekt von JSONarray in getData() nicht erreichen

+1

posten Sie Ihre Json Antwort – arjun

+0

die Antwort nehme diese "Daten" zu sein: [ { "id": "90", "username": "10090", "mk_nama": „XXXXXXXXXX " } ] –

+0

ist Ihr Problem nur mit der Arraylist. Ich meine, erhalten Sie Daten in anderen Bereichen wie 'username',' pass', 'status' – arjun

Antwort

0

ich denke, das funktioniert vielleicht, aber wahrscheinlich sollten Sie einige Details ändern. Setzen Sie einen Haltepunkt und debuggen Sie, um zu sehen, was in Variablen passiert.

Data data = response.body().getData(); 
Datum datum = data.get(0); 
Toast.makeText(LoginActivity.this,datum.getUsername() +" , "+ datum.getMkNama(),Toast.LENGTH_SHORT).show(); 
+0

das Status- und Nachrichtenfeld ist ein String und funktioniert gut, aber wenn ich versuche, die Arraylist Toast, ich kann nicht das JSONobject im Array –

+0

haben Sie versuchen, response.body() in Toast um zu sehen, was es würde Show? Ich denke, es sollte dir das Benutzerobjekt geben, oder? –

+0

ja, es zeigen nur die getStatus(), getMessage und getData(), und wenn ich die getData() wählen, zeigt es nicht das Objekt innerhalb –