Android 获取 JSONObject 异常
Android getting JSONObject Exception
如果我的 JSON 对象 media
中的 twitter
值在我下面的代码中为 null,即使我检查以确保我没有将值分配给任何东西(如果有的话)。我检查的方式是否正确?或者如何避免我的代码抛出异常并允许我检查 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);
}
}
您可以使用 media.optString("twitter");
。并且您需要另一个 media.has("twitter")
来区分 "no key called 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 中。使用 optString 代替 getString 是明智的。
如果我的 JSON 对象 media
中的 twitter
值在我下面的代码中为 null,即使我检查以确保我没有将值分配给任何东西(如果有的话)。我检查的方式是否正确?或者如何避免我的代码抛出异常并允许我检查 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);
}
}
您可以使用 media.optString("twitter");
。并且您需要另一个 media.has("twitter")
来区分 "no key called 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 中。使用 optString 代替 getString 是明智的。