необработанное исключение org.json.JSONObject

Я использую библиотеку Retrofit, чтобы сделать почтовый запрос httpClient, но я не могу передать тело ответа конструктору JSONObject, когда я пытаюсь передать ответ JSONObject, используя:

org.json.JSONObject Jobject = new org.json.JSONObject(jsonData);

У меня следующее исключение:

необработанное исключение org.json.JSONObject

Мой код:

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

                    String jsonData = response.body().toString();

                    JSONObject Jobject = new JSONObject(jsonData);

                }

            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                display_message.setText(t.toString());
            }
        });

Ожидаемое возвращаемое значение из следующего оператора:

String jsonData = response.body().source().toString();

Is : {"is_new_user":true,"messing_user_data["mobile_number","country_code","password","pin"]}

Но точный результат:

[size=90 text={"is_new_user":true,"messing_user_data":["mobile_number","countr…]

Любые идеи мне помогают.


person Afnan Khalifa    schedule 01.08.2016    source источник
comment
Добавьте JSONObject Jobject = new JSONObject(jsonData); в блок try и поймайте JSONException в блоке catch.   -  person Prerak Sola    schedule 01.08.2016
comment
Можете ли вы написать журнал jsonData? Пожалуйста, проверьте это формат файла json? JsonObject или JsonArray?   -  person sonnv1368    schedule 01.08.2016
comment
См. Дополнительные обновления выше   -  person Afnan Khalifa    schedule 02.08.2016


Ответы (1)


Вы должны окружить свой

JSONObject Jobject = new JSONObject(jsonData);

с блоком try-catch

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

            String jsonData = response.body().toString();

            try {
                JSONObject Jobject = new JSONObject(jsonData);
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        display_message.setText(t.toString());
    }
});

И попробуйте проверить свою строку json, если она имеет правильный формат, который вам нужен

person HendraWD    schedule 01.08.2016
comment
После окружения JSONObject с помощью try-catch у меня было следующее исключение: org.json.JSONException: значение okhttp3.ResponseBody$1@248a0209 типа java.lang.String не может быть преобразовано в JSONObject - person Afnan Khalifa; 01.08.2016
comment
Что ж, это очевидно, поскольку ваша строка не является допустимым объектом JSON. Пожалуйста, проверьте еще раз свою строку {is_new_user: true, messing_user_data [mobile_number, country_code, password, pin]} - person HendraWD; 02.08.2016