我的应用使用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
答案 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")
。