2017-02-05 12 views
0

私はこれを初心者です。私はJSONarrayのPOSTリクエストからResponseを取得しようとしています。そして、配列の応答を取得しようとすると、JSONオブジェクトを取得できます。これはJSONアレイでのPOSTリクエスト応答の更新

User.Java私のPOJOである

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 interface UserClient { 
@FormUrlEncoded 
@POST("login") 
Call<User> loginAccount (
          @Field("user") String username, 
          @Field("pass") String password 
);} 

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

であり、これは私の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(); 
     } 
    }); 
} 
私は(のgetDataでJSONarrayのオブジェクトに到達することができないように見える

+1

応答は、この "データ" であることを仮定し、あなたのJSONレスポンス – arjun

+0

を投稿:[ { "ID": "90"、 "ユーザ名": "10090"、 "mk_nama":「XXXXXXXXXX " } ] –

+0

あなたは問題はarraylistだけです。つまり、 'username'、' pass'、 'status'のような他のフィールドでデータを取得しているということです。 – arjun

答えて

0

私は、これは多分うまくいくと思うが、おそらくあなたは、いくつかの詳細を変更する必要があります。ブレークポイントとデバッグを入れて、変数で何が起きているのかを確認してください。

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

ステータスとメッセージフィールドは文字列であり、うまくいきますが、arraylistをトーストしようとすると配列内にJSONオブジェクトを取得できません –

+0

トーストで試しましたか?ショー?私はそれがあなたにユーザーオブジェクトを与える必要があると思いますか? –

+0

はい、getStatus()、getMessage、およびgetData()のみを表示し、getData()を選択すると、これらの関数が定義されている –

関連する問題