繁体   English   中英

如何使用Java处理JSON响应中的可选键

[英]How to handle optional keys in JSON response with Java

"app":{  
  "icon":{  
     "icon":"TOP_RATED"
  },
  "message":{  
     "_type":"TextSpan",
     "text":"Top Rated"
  }
}

我在继承的项目之一中继续看到以下代码。 上面的JSON响应解析如下

// itemObject has the entire json response
// appObject is a POJO with icon, type fields
String icon= JsonPath.with(itemObject).getAsString("icon/icon");
appObject.setIcon(icon);

String type = "";
try {
  type = JsonPath.with(itemObject).getAsString("message/_type");
catch(IllegalArgumentException e) {
  // do nothing if type is not found in response
} finally {
    // set type to empty string if it's not found
    appObject.setType(type);
}

在这种情况下,当特定应用程序不存在_type时,是否最好用上面的try / catch块将其包围? 使用try / catch / finally块处理业务逻辑而不是错误处理似乎是错误的。 有什么更好的方法可以做到这一点,Java 8 Optional可以对此提供帮助吗?

我发现org.json包简单明了。 这里找到。 例如, org.json.JSONObject类包含public boolean has(String key) org.json.JSONObject public boolean has(String key)方法,该方法用于检查某个键是否存在。

如果此对象具有名称映射,则返回true。 映射可以为NULL。

您可以在“ HAS”处检查这种方式-如果此对象具有名称映射,则返回true。 映射可以为NULL。

     if (json.has("status")) {
        String status = json.getString("status"));
     }
     if (json.has("club")) {
        String club = json.getString("club"));
     }

您也可以使用'isNull'进行检查-如果此对象没有名称映射或值为NULL,则返回true。

 if (!json.isNull("club"))
     String club = json.getString("club"));

http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM