Разбор ответа одного объекта - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь проанализировать этот JSON, но не получаю никаких результатов в журнале. Образец JSON:

   {
    "coach_details": {
        "coach_id": "1556",
        "academy_id": "1",
        "username": "testcoach@gmail.com",
        "first_name": "test",
        "last_name": "test",
        "gender": "female",
        "email": "",
        "mobile": "9874563210",
        "middle_name": "",
        "nick_name": "",
        "state": "4"
    },
    "status": 1,
    "message": "success"
   }

Я пробовал это:

 @Override
 public void onResponse(JSONObject response) {
 if (response != null) {
      Log.d(TAG, "Response:\t" + response.toString());

      try {
         JSONObject jsonObject = new JSONObject(response.toString());
         JSONObject details = jsonObject.getJSONObject("coach_details");
         coachId = details.getString("coach_id");
         Log.d(TAG, "Coach id:\t" + coachId);
         Log.d(TAG, "Details:\t" + details);
      } catch (JSONException e) {
         e.printStackTrace();
      }
  }
}

Можно ли как-то разобрать этот ответ, чтобы получить подробные ключи объекта? Спасибо.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Надеюсь, это сработает для вас.

Попробуй вот так,

 try {
            JSONObject jsonObject1 = new JSONObject(response.toString());
            JSONObject jsonObject2 = jsonObject1.getJSONObject("coach_details");
            String coach_id = jsonObject2.getString("coach_id");
            String academy_id = jsonObject2.getString("academy_id");

            String status = jsonObject1.getString("status");
            String message = jsonObject1.getString("message");

            Log.e("coach_id", coach_id);
            Log.e("academy_id", academy_id);
            Log.e("status", status);
            Log.e("message", message);


        } catch (JSONException e) {
            e.printStackTrace();
        }

убедитесь, что вы получили ответ от сервера, как вы предоставили.

0 голосов
/ 05 июля 2018

Я публикую полный код того, что я пробовал. И я могу видеть все журналы.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        String url = "http://devsports.copycon.in/api/coach_login";

        Map<String, String> params = new HashMap();
        params.put("username", "testcoach@gmail.com");
        params.put("password", "123@abcd");

        JSONObject parameters = new JSONObject(params);

        JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, parameters, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                if (response != null) {
                    Log.d(TAG, "Response:\t" + response.toString());

                    try {
                        JSONObject jsonObject = new JSONObject(response.toString());
                        JSONObject details = jsonObject.getJSONObject("coach_details");
                        String coachId = details.getString("coach_id");
                        Log.d(TAG, "Coach id:\t" + coachId);
                        Log.d(TAG, "Details:\t" + details);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                //TODO: handle failure
            }
        });

        Volley.newRequestQueue(this).add(jsonRequest);

    }

Пожалуйста, проверьте полный код и внимательно проверьте свои журналы.

Попробуйте использовать библиотеку Gson, если можете.

@Override
            public void onResponse(JSONObject response) {
                if (response != null) {


                    CoachResponse coachResponse = new Gson().fromJson(response.toString(), CoachResponse.class);

                    Log.d(TAG, "Coach id:\t" + coachResponse.getCoachDetails().getCoachId());


//                    Log.d(TAG, "Response:\t" + response.toString());
//
//                    try {
//                        JSONObject jsonObject = new JSONObject(response.toString());
//                        JSONObject details = jsonObject.getJSONObject("coach_details");
//                        String coachId = details.getString("coach_id");
//                        Log.d(TAG, "Coach id:\t" + coachId);
//                        Log.d(TAG, "Details:\t" + details);
//                    } catch (JSONException e) {
//                        e.printStackTrace();
//                    }
                }
            }

Учитывая, что ваш класс отображения выглядит так:

public class CoachResponse {

    @SerializedName("coach_details")
    @Expose
    private CoachDetails coachDetails;
    @SerializedName("status")
    @Expose
    private Integer status;
    @SerializedName("message")
    @Expose
    private String message;

    public CoachDetails getCoachDetails() {
        return coachDetails;
    }

    public void setCoachDetails(CoachDetails coachDetails) {
        this.coachDetails = coachDetails;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


    public class CoachDetails {

        @SerializedName("coach_id")
        @Expose
        private String coachId;
        @SerializedName("academy_id")
        @Expose
        private String academyId;
        @SerializedName("username")
        @Expose
        private String username;
        @SerializedName("first_name")
        @Expose
        private String firstName;
        @SerializedName("last_name")
        @Expose
        private String lastName;
        @SerializedName("gender")
        @Expose
        private String gender;
        @SerializedName("email")
        @Expose
        private String email;
        @SerializedName("mobile")
        @Expose
        private String mobile;
        @SerializedName("middle_name")
        @Expose
        private String middleName;
        @SerializedName("nick_name")
        @Expose
        private String nickName;
        @SerializedName("state")
        @Expose
        private String state;

        public String getCoachId() {
            return coachId;
        }

        public void setCoachId(String coachId) {
            this.coachId = coachId;
        }

        public String getAcademyId() {
            return academyId;
        }

        public void setAcademyId(String academyId) {
            this.academyId = academyId;
        }

        public String getUsername() {
            return username;
        }

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

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getMobile() {
            return mobile;
        }

        public void setMobile(String mobile) {
            this.mobile = mobile;
        }

        public String getMiddleName() {
            return middleName;
        }

        public void setMiddleName(String middleName) {
            this.middleName = middleName;
        }

        public String getNickName() {
            return nickName;
        }

        public void setNickName(String nickName) {
            this.nickName = nickName;
        }

        public String getState() {
            return state;
        }

        public void setState(String state) {
            this.state = state;
        }

    }

}
0 голосов
/ 05 июля 2018
@Override
 public void onResponse(JSONObject response) {
 if (response != null) {
      Log.d(TAG, "Response:\t" + response.toString());

      try {
         // response is already JSONObject.
         // JSONObject jsonObject = new JSONObject(response.toString());
         if (response.has("coach_details"){
             JSONObject details = response.getJSONObject("coach_details");
                  if (details.has("coach_id"){
                       coachId = details.getString("coach_id");
                       Log.d(TAG, "Coach id:\t" + coachId);
                       Log.d(TAG, "Details:\t" + details);
                  } else { 
                       Log.d(TAG, "It has Not coach_id data");
                  }
         } else {
            Log.d(TAG, "It has Not coach_details data");
         }
      } catch (JSONException e) {
         e.printStackTrace();
      }
  }
}
...