0

twitter如果在下面的代码中我的 JSON 对象中的值为 null,我会收到 JSONObject 异常media,即使我检查以确保我没有将值分配给任何东西(如果是)。我检查的方式是否正确?或者我怎样才能避免我的代码抛出异常并允许我检查 twitter 值是否存在?

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);
      }
  }
4

2 回答 2

1

您可以使用media.optString("twitter");. 并且您需要另一个media.has("twitter")来区分“没有调用键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);
  }
于 2015-10-03T03:12:21.927 回答
1

使用 .has 方法找出密钥是否在 json 中。明智的做法是使用 optString,而不是 getString。

于 2015-10-03T04:08:44.263 回答