import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.sf.json.JSONObject;
public class JsonToMap {
/**
* 对外提供获取多嵌套json值的方法,已重载
*
* @param result
* 初始化输入的json字符串,也被递归调用之后覆盖
* @param Hierarchy
* 要获取最终的值要经历几个json层级
* @param keys
* 各层级下对应的json的key,个数与Hierarchy的值一致
* @return
*/
public Object getValue(Object result, int Hierarchy, String[] jsonKeys) {
int i = 0;
// 递归调用getValue方法,取到最终所需要的json字符串中的值
while (i < jsonKeys.length) {
result = getValue(result, Hierarchy, jsonKeys[i]);
i++;
}
// 返回最终需要的值
return result;
}
/**
* 用于递归调用,获取单层的json的某个值
*
* @param result
* 初始化输入的json字符串
* @param Hierarchy
* 要获取最终的值要经历几个json层级
* @param firstkey
* 对应到json的key,仅限于当前层级
* @return
*/
private Object getValue(Object result, int Hierarchy, String firstkey) {
// 将字符串转换成json对象
JSONObject jsonObject = JSONObject.fromObject(result);
// 构造jsonToMap对象,准备存储jsonObject对象中的数据
Map jsonToMap = new HashMap<Object, Object>();
// 获取迭代器
Iterator ite = jsonObject.keys();
// 遍历jsonObject对象中的数据,将数据添加到jsonToMap对象
while (ite.hasNext()) {
String key = ite.next().toString();
String value = jsonObject.get(key).toString();
jsonToMap.put(key, value);
}
// 返回所需要的值
return jsonToMap.get(firstkey);
}
}