递归调用获取net.sf.json.jsonObject的值,写了一下午,后来被别的代码替换,但是不舍得删掉,做个笔记
/**
* 通过键获取jsonObject值
* @param obj
* @param key
* @return
*/
public String getParamByJsonObjectKey(JSONObject obj, String key) {
String value = null;
if (obj != null && !obj.isNullObject()) {
for (Object k : obj.keySet()) {
Object childObj = obj.get(k.toString());
if (childObj == null) continue;
value = instanceJSONObj(key, childObj);
if (value != null) break;
if (childObj instanceof JSONArray) {
JSONArray childArrayObj = (JSONArray) childObj;
for (Object o : childArrayObj) {
if (o == null) continue;
value = instanceJSONObj(key, o);
if (value != null) break;
}
}
}
}
return value;
}
/**
* 调用instance
* @param key
* @param o
* @return
*/
private String instanceJSONObj(String key, Object o) {
String value = null;
if (o instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) o;
if (!jsonObject.containsKey(key)) {
value = getParamByJsonObjectKey(jsonObject, key);
} else {
value = jsonObject.getString(key);
}
}
return value;
}