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.

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