检查值在 JSON 对象中存在与否,以避免 JSON 异常

2022-09-02 00:06:58

我从 Web 服务调用中获取 JSONObject。

JSONObject result = ...........

当我访问像result.getString("fieldName");

如果该 JSONObject 中存在 ,则它工作正常。如果不存在,我得到例外fieldNameJSONObject["fieldName"] not found.

我可以用它来做这个。但是我有近20个这样的领域。我需要为此使用20个尝试捕获块,还是有其他选择。提前致谢...try catch


答案 1

有一个方法JSONObject#has(key)正是用于此目的的。这样,您可以避免对每个字段进行异常处理。

if(result.has("fieldName")) {
    // It exists, do your stuff
} else {
    // It doesn't exist, do nothing 
}

此外,您可以使用 JSONObject#isNull(str) 方法来检查它是否是。null

if(result.isNull("fieldName")) {
    // It doesn't exist, do nothing
} else {
    // It exists, do your stuff
}

您还可以将逻辑移动到一个通用方法(用于代码可重用性),您可以在其中传递任何和字段名称,并且如果该字段存在或不存在,该方法将返回。JSONObject


答案 2

假设您使用的是 org.json.JSONObject,则可以改用 JSONObject#optString(String key, String defaultValue)。如果不存在,它将返回:defaultValuekey

String value = obj.optString(fieldName, defaultValueIfNull);