一、前言
1、net.sf.json.JSONObject
当JSONObject的key
存在,两者没有区别(get()
需额外转字符串型)。
当key
不存在时,那么getString()
方法就会抛出异常。
2、com.alibaba.fastjson.JSONObject(推荐)
当key
不存在时,那么getString()
方法直接返回null
二、源码
public Object get(String key) {
this.verifyIsNull();
return this.properties.get(key);
}
private void verifyIsNull() {
if (this.isNullObject()) {
throw new JSONException("null object");
}
}
public boolean isNullObject() {
return this.nullObject;
}
public String getString(String key) {
verifyIsNull();
// 核心语句 判断key键是否存在
Object o = get(key);
if( o != null ){
return o.toString();
} else {
throw new JSONException( "JSONObject[" + JSONUtils.quote( key ) + "] not found." );
}
}
三、实例
JSONArray data = JSONArray.fromObject(param.get("data"));
for (int i = 0; i < data.size(); i++) {
JSONObject map = data.getJSONObject(i);
log.info("每一项map-----------------------------" + map);
String param0 = String.valueOf(map.get("age"));
log.info("JSONObject get 存在key-----------------------------" + param0);
String param1 = String.valueOf(map.get("sex"));
log.info("JSONObject get 不存在key---------------------------" + param1);
String param2 = map.getString("age");
log.info("JSONObject getString 存在key-----------------------" + param2);
String param3 = map.getString("sex");
log.info("JSONObject getString 不存在key---------------------" + param3);
}
传参请求
image.png日志打印
image.png四、总结
1、当一定存在某个key
,两者方法皆可,建议使用getString()
,节省代码量无需转字符串型。
2、当key
不一定存在时,建议使用get()
,以免抛出异常。
3、2021-09-27更新 推荐使用com.alibaba.fastjson.JSONObject!
网友评论