關於對多層嵌套的json字符串取目標值的問題


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM