JSONObject - How to get a value?

后端 未结 4 1459
春和景丽
春和景丽 2020-11-27 16:07

I\'m using a java class on http://json.org/javadoc/org/json/JSONObject.html.

The following is my code snippet:

String jsonResult = UtilMethods.getJSON(         


        
4条回答
  •  南笙
    南笙 (楼主)
    2020-11-27 17:02

    If it's a deeper key/value you're after and you're not dealing with arrays of keys/values at each level, you could recursively search the tree:

    public static String recurseKeys(JSONObject jObj, String findKey) throws JSONException {
        String finalValue = "";
        if (jObj == null) {
            return "";
        }
    
        Iterator keyItr = jObj.keys();
        Map map = new HashMap<>();
    
        while(keyItr.hasNext()) {
            String key = keyItr.next();
            map.put(key, jObj.getString(key));
        }
    
        for (Map.Entry e : (map).entrySet()) {
            String key = e.getKey();
            if (key.equalsIgnoreCase(findKey)) {
                return jObj.getString(key);
            }
    
            // read value
            Object value = jObj.get(key);
    
            if (value instanceof JSONObject) {
                finalValue = recurseKeys((JSONObject)value, findKey);
            }
        }
    
        // key is not found
        return finalValue;
    }
    

    Usage:

    JSONObject jObj = new JSONObject(jsonString);
    String extract = recurseKeys(jObj, "extract");
    

    Using Map code from https://stackoverflow.com/a/4149555/2301224

提交回复
热议问题