如何在Retrofit 2中阅读JSON {“success”:true}?

时间:2017-06-08 08:13:33

标签: android json gson retrofit

在正常JSONObject jsonResponse中,我只使用boolean success = jsonResponse.getBoolean("success");。现在,我需要使用Retrofit库。 我知道响应是GSON格式的。这就是为什么我很难弄清楚如何处理$response["success"]文件中的php

我试过了:

   call.enqueue(new Callback<User_Account_Model>() {
        @Override
        public void onResponse(Call<User_Account_Model> call, Response<User_Account_Model> response) {

            try {
                JSONObject jsonResponse = new JSONObject(new Gson().toJson(response));
                boolean success = jsonResponse.getBoolean("success");
                Toast.makeText(MainActivity.this,String.valueOf(success),Toast.LENGTH_SHORT).show();
            } catch (JSONException e) {
                e.printStackTrace();
            }

try and catch内的内容似乎没有被执行。没有Toast消息显示。我的方法是正确的,只是遗漏了某些东西,或者它完全错了?

2 个答案:

答案 0 :(得分:0)

User_Account_Model中为success添加密钥

public class User_Account_Model{
    @Expose
    private boolean success;

    // Add Getter and setter for **success**
}

现在在onResponse方法中添加

try {
    String json =response.body().string();
    JSONObject jsonResponse = new JSONObject(json);
    boolean success = jsonResponse.getBoolean("success");
    Toast.makeText(MainActivity.this,String.valueOf(success),Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

创建一个只有一个布尔值的类

public class MyResponse{
  @SerializedName("success")
  private boolean success;

  public boolean getSuccess(){
   return success; 
  }
  public void setSuccess(boolean _success){
   success = _success
  }

}

在enqueue方法中使用此类。

   call.enqueue(new Callback<MyResponse>() {
    @Override
    public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {

        try {
              int statusCode = response.code();
              Log.d("Response Code: ", "status Code: " + statusCode);
              if (response.isSuccessful()){
                MyResponse mResponse = response.body();
              }
        } catch (JSONException e) {
            e.printStackTrace();
        }

如果您的响应只包含一个节点“成功”,那么它将起作用。