之前遇到在json解析时用optXXX方法 因为自己一直使用getXXX 所以在看源码查区别
JSONObject
在JSONObject这个类中获取value存在两类方法 optXXX和getXXX 下面以获取String类型value为例看下两者是怎么实现的
首先是getString源码:
public String getString(String name) throws JSONException {
Object object = get(name);
String result = JSON.toString(object);
if (result == null) {
throw JSON.typeMismatch(name, object, "String");
}
return result;
}
然后是optString源码:
public String optString(String name) {
return optString(name, "");
}
public String optString(String name, String fallback) {
Object object = opt(name);
String result = JSON.toString(object);
return result != null ? result : fallback;
}
通过比较源码可知:
getString在值为null时会抛出异常 我们需要对该异常进行捕获处理
optString在值为null时不会抛出异常 而是返回fallback的值 因此我们无需进行异常处理
总结:如果不想对异常进行捕获处理使用optXXX 否则就需要对相应的异常进行捕获处理
2万+

被折叠的 条评论
为什么被折叠?



