Android – JSONException Нет значения для

Я знаю, что здесь есть несколько вопросов с одной и той же темой и ошибкой, но ни одна из них не указывает на ту же проблему, что и моя, поэтому я решил опубликовать свой вопрос здесь, надеясь, что кто-то поможет мне указать причину. Поэтому я пытаюсь реализовать функцию входа в приложение и вот код:

if (tag.equalsIgnoreCase(login_tag)){ // check for login response try { if (json.getString(KEY_SUCCESS) != null) { String res = json.getString(KEY_SUCCESS); if(Integer.parseInt(res) == 1){ // user successfully logged in // Store user details in SQLite Database DatabaseHandler db = new DatabaseHandler(mContext); JSONObject json_user = json.getJSONObject("user"); // Clear all previous data in database logoutUser(mContext); Toast.makeText(mContext, json.toString(3), Toast.LENGTH_LONG).show(); db.addUser(json_user.getString(KEY_EMAIL), json_user.getString(KEY_NAME), json.getString(KEY_UID), json.getString(KEY_AVA), json_user.getString(KEY_BDAY), json_user.getString(KEY_COUNTRY), json_user.getString(KEY_PREF), json_user.getString(KEY_SPEND)); // Launch Dashboard Screen Intent dashboard = new Intent(mContext, DashboardActivity.class); // Close all views before launching Dashboard dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); mContext.startActivity(dashboard); // Close Login Screen ((Activity) mContext).finish(); } } } catch (JSONException e) { e.printStackTrace(); } } 

И это ответ JSON, который я получил при входе в систему:

 { "tag": "login", "success": 1, "error": 0, "uid": "5123", "user": { "email": "abcxyz@gmail.com", "name": "abc", "avatar": "avatars/img_hzsxda_2013-03-18-11-03-33.jpg", "bday": "1991-02-01", "country": "Australia", "preferences": "none", "spending": "none" } } 

Так что, видимо, для avatar есть значение, но я все еще получил это предупреждение в своем логарифме:

 03-18 12:06:36.972: W/System.err(24574): org.json.JSONException: No value for avatar 

Поскольку addUser не addUser , я не могу завершить addUser , поэтому логин завершается с ошибкой. Пожалуйста, помогите мне найти ошибку и как ее решить. Спасибо.

Вы используете неправильный объект, чтобы получить значение avatar здесь json.getString(KEY_AVA) . Это должно быть json_user.getString(KEY_AVA) .

Кроме того, вы можете использовать optString вместо getString который просто возвращает значение null если значение не существует, вместо того, чтобы выбрасывать исключение.