Я хочу отобразить высокий балл для своего 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();
}
});
}
@akhilnair упс! извините, я указал неправильный код в своем вопросе. Я его отредактировал, этот отредактированный код должен быть моим правильным кодом для моего вопроса. Извините, потому что я только что изменил его, прежде чем написать свой вопрос... Кстати, если я использую этот код, мое приложение вылетит и вернется к другому макету.
Вам нужно заменить
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 из ответа напрямую, мое приложение просто падает. Он вернется на предыдущую страницу.
Скажите, пожалуйста, какую ошибку вы получаете?
Я не вижу ошибки. Но в локгате показывает ошибку вроде pid(and_some_numbers). Вот что я помню. Я пытаюсь открыть свою Android-студию прямо сейчас, но у меня всего 4 ГБ оперативной памяти, поэтому она все еще не отвечает :'') извините.
Я думаю, это другая проблема, но дайте мне знать об ошибке, когда ваша студия вернется.
моя студия вернулась!.. Я пытался закодировать, как ваш ответ (то, что я кодирую, прежде чем попробовать код в своем вопросе), и это работает !! Это мой косяк, извини. Я только что понял, что написал getData() над объявлением textView. Вот почему мое приложение разбилось. и когда я снова пытаюсь его закодировать и перемещаю getData() после объявления textView, он успешно работает без каких-либо ошибок :)
Всегда приятно.
не забудьте написать свой 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();
}
});
}
Я попытался разобрать JSON как
response.getInt("HS")
, и у меня это работает нормально. Вы уверены, что ошибка в той же строке? Можете ли вы опубликовать свою трассировку стека.