[英]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.