在JSONObject中处理null

时间:2016-03-09 23:39:07

标签: android jsonobject

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

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

2 个答案:

答案 0 :(得分:4)

你必须在

中抓住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不会抛出异常而是返回null

答案 1 :(得分:0)

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