我有一个json解析器,它解析一个复杂的json对象。有些对象有关键' a2'有些人不知道。我想回来"没找到"当对象没有键" a2"时。这是我的代码:
String JSON = {"IP":{"string":"1.2.3.4"},"rrr":{"test":{"a1":"36","a2":"www.abc.com"}}}
public String getParameters(JSONObject json) throws JSONException {
String jsonString;
if ((jsonString = json.getJSONObject("rrr").getJSONObject("test")
.getString("a2")) != null) {
return jsonString;
} else
return "not Found";
}
但是代码中发生的事情是,如果解析器没有找到' a2'它抛出异常并返回。我对代码做了哪些更改才能使其正常工作?
答案 0 :(得分:1)
如果是getTYPE(key)
方法,如果找不到key
元素,它们将抛出异常。
为避免这种情况,您可以使用optTYPE(key)
,在这种情况下会返回null
或某些默认值。
如果是optString
,它将返回空字符串作为默认值,但如果optString(key, null)
元素不存在,您可以使用null
指定您希望返回key
所以你的代码看起来像
public String getParameters(JSONObject json) throws JSONException {
String jsonString;
if ((jsonString = json.getJSONObject("rrr").getJSONObject("test")
.optString("a2",null)) != null) {
// ^^^ ^^^^ <- default value in case of lack of element
return jsonString;
} else
return "not Found";
}