处理 JSONObject 中的 null

Handling null in JSONObject

我的应用程序使用 Eventbrite API,当事件徽标为 null 时它会崩溃。

JSONObject jsonRootObject = new JSONObject(event);
JSONArray jsonArray = jsonRootObject.optJSONArray("events");
JSONObject jsonObject = jsonArray.getJSONObject(i);
information = jsonObject.getJSONObject("logo");
text = information.getString("url");
name = "eventsImage" + i;
resId = getResources().getIdentifier(name, "id", getPackageName());
new LoadImagefromUrl().execute(new LoadImagefromUrlModel(text, resId));

我正在尝试对此事件进行例外处理,但我对 JSONObjects 不是很有经验,而且我不知道 if 语句应该是什么样子

我尝试了以下方法,但没有用

jsonObject.getJSONObject("logo")!=null

它崩溃是因为您试图检索一个不存在的对象。如果对象可能是 null,您应该使用 jsonObject.optJsonObject("logo")

你必须在

中赶上 JSONException
information = jsonObject.getJSONObject("logo");

喜欢

try{
    information = jsonObject.getJSONObject("logo");
}catch(JSONException je){
    //json object not found
}

看到这个link

这表示 - public JSONObject getJSONObject (String name)

Returns the value mapped by name if it exists and is a JSONObject, or throws otherwise.

或者,您可以像这样使用 optJSONObject -

if(jsonObject.optJSONObject("logo")!=null)'

因为 optJSONObject 不会抛出异常 returns null if no key found