方法主体:
/**
* 递归获取每个JSONObject的最后一个节点的key与value
* 如果遇到相等的key,则key为'key=>value'执行时保存 。或在后一个key值拼接随机种子
* 为以后处理JSON的主要工具类
* 开发日期:2014-7-10 16:41
*
* @author mengfeiyang
* @param obj
* @throws Exception
*/
public void getJSONode(Object obj) throws Exception {
if (obj instanceof JSONObject) {
JSONObject jo = (JSONObject) obj;
String[] names = JSONObject.getNames(jo);
for (String na : names) {
try {
getJSONode(jo.getJSONObject(na));
} catch (JSONException e) {
if (jo.get(na) instanceof JSONArray) {
if (!jo.get(na).toString().contains(":")) {
hm.put(na, jo.get(na).toString());
} else {
getJSONode(jo.get(na));
}
} else {
if (hm.containsKey(na)) {
// String k = na + new Random().nextInt();
hm.put(na + "=>" + jo.getString(na),
jo.getString(na));
hm.put(jo.getString(na), na);
} else {
hm.put(na, jo.getString(na));
hm.put(jo.getString(na), na);
}
}
}
}
} else if (obj instanceof JSONArray) {
JSONArray jarr = (JSONArray) obj;
for (int i = 0; i < jarr.length(); i++) {
JSONObject jso = jarr.getJSONObject(i);
getJSONode(jso);
}
}
}
使用时,请在类中先声明一个Map,参数形式如下:
JSONObject jobj = new JSONObject(JSONContent);
首次请传递jobj。