复杂的json解析未找到异常java

时间:2015-02-21 03:50:45

标签: java json parsing

我有一个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'它抛出异常并返回。我对代码做了哪些更改才能使其正常工作?

1 个答案:

答案 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";

}