Android получает исключение JSONObject
Я получаю исключение JSONObject в тех случаях, когда twitter
значение в моем объекте JSON media
в моем приведенном ниже коде имеет значение null, хотя я проверяю, чтобы убедиться, что я не назначаю значение чему-либо, если оно есть. Правильный ли способ проверки? или как я могу избежать, чтобы мой код выдал исключение и позволить мне проверить, есть ли значение твиттера или нет?
if(nextActivityObject.getJSONObject("media") != null){
media = nextActivityObject.getJSONObject("media");
Log.d("NEXT MEDIA OBJECT NOT EMPTY", media.toString());
if(media.getString("twitter") != null && media.getString("facebook") != null){
Log.d("BOTH NOT NULL", "both not null");
twitter = media.getString("twitter");
facebook = media.getString("facebook");
intent.putExtra("twitter", twitter);
intent.putExtra("facebook", facebook);
}
else if(media.getString("twitter") != null){
twitter = media.getString("twitter");
Log.d("JUST TWITTER NOT NULL", twitter.toString());
intent.putExtra("twitter", twitter);
}
else if(media.getString("facebook") != null){
facebook = media.getString("facebook");
Log.d("JUST FACEBOOK NOT NULL", facebook.toString());
intent.putExtra("facebook", facebook);
}
}
2 ответа
Решение
Ты можешь использовать media.optString("twitter");
, А тебе нужен другой media.has("twitter")
различать "нет ключа называется twitter
" а также "twitter
ключ имеет пустое строковое значение ".
Подводя итог, для "твиттерного" ключа можно написать
else if(media.has("twitter")){
twitter = media.optString("twitter");
// here twitter is non-NULL String
Log.d("JUST TWITTER NOT NULL", twitter.toString());
intent.putExtra("twitter", twitter);
}
Используйте метод.has, чтобы узнать, находится ли ключ в json или нет. Вместо getString целесообразно использовать optString.