Значение типа java.lang.Integer не может быть преобразовано в JSONObject

Я хочу отобразить высокий балл для своего Android из JSON. Но у меня есть ошибка, которая говорит value 100 at HS of type java.lang.Integer cannot be converted to JSONObject

вот как выглядит JSON

{
"HS": 100
}

вот мой код, чтобы показать значение JSON

public void getData(){
        AndroidNetworking.get("http://192.168.1.19/web_admin/public/api/highSkor_api")
                .setPriority(Priority.LOW)
                .build()
                .getAsJSONObject(new JSONObjectRequestListener() {
                    @Override
                    public void onResponse(JSONObject response) {
                            //adding the product to product list
                            try {
                                //get JSON data
                                JSONObject data = response.getJSONObject("HS");
                                int HS = data.getInt("HS");
                                tx_hscore.setText(getString(R.string.high_score, HS);
                                Log.d(TAG, "ISI : "+HS);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        //Toast.makeText(Result.this, "High Score : "+data_highSkor.getHighSkor(), Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(ANError error) {
                        Log.e(TAG, "onError : "+ error);
                        Toast.makeText(Result.this, "Failed to reach server : "+error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

    }

Я попытался разобрать JSON как response.getInt("HS"), и у меня это работает нормально. Вы уверены, что ошибка в той же строке? Можете ли вы опубликовать свою трассировку стека.

akhil nair 14.12.2020 14:36

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

stupirl 14.12.2020 17:22
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
2
668
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно заменить

JSONObject data = response.getJSONObject("HS");

с

int hs = response.getInt("HS")

потому что response уже JSONObject

если бы ваш json был таким

{
"HS": {
     "key1": "value1",
     "key2": "value2"
    }
 }

Тогда вы могли бы сделать

JSONObject data = response.getJSONObject("HS");

Спасибо за ответ @akhilnair!.. Я пытался заменить его так, но почему мое приложение вылетает? каждый раз, когда я пытаюсь получить Int из ответа напрямую, мое приложение просто падает. Он вернется на предыдущую страницу.

stupirl 14.12.2020 18:51

Скажите, пожалуйста, какую ошибку вы получаете?

akhil nair 14.12.2020 18:53

Я не вижу ошибки. Но в локгате показывает ошибку вроде pid(and_some_numbers). Вот что я помню. Я пытаюсь открыть свою Android-студию прямо сейчас, но у меня всего 4 ГБ оперативной памяти, поэтому она все еще не отвечает :'') извините.

stupirl 14.12.2020 18:57

Я думаю, это другая проблема, но дайте мне знать об ошибке, когда ваша студия вернется.

akhil nair 14.12.2020 19:04

моя студия вернулась!.. Я пытался закодировать, как ваш ответ (то, что я кодирую, прежде чем попробовать код в своем вопросе), и это работает !! Это мой косяк, извини. Я только что понял, что написал getData() над объявлением textView. Вот почему мое приложение разбилось. и когда я снова пытаюсь его закодировать и перемещаю getData() после объявления textView, он успешно работает без каких-либо ошибок :)

stupirl 14.12.2020 19:20

Всегда приятно.

akhil nair 14.12.2020 19:25

не забудьте написать свой getData() после объявления textView tx_hscore.

и используйте этот код в своем getData() :

public void getData(){
        AndroidNetworking.get("http://192.168.1.19/web_admin/public/api/highSkor_api")
                .setPriority(Priority.LOW)
                .build()
                .getAsJSONObject(new JSONObjectRequestListener() {
                    @Override
                    public void onResponse(JSONObject response) {
                            //adding the product to product list
                            try {
                                //get JSON data                                
                                int HS = response.getInt("HS");
                                tx_hscore.setText(getString(R.string.high_score, HS);
                                Log.d(TAG, "ISI : "+HS);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        //Toast.makeText(Result.this, "High Score : "+data_highSkor.getHighSkor(), Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onError(ANError error) {
                        Log.e(TAG, "onError : "+ error);
                        Toast.makeText(Result.this, "Failed to reach server : "+error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

    }

Другие вопросы по теме