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);
}
}