JSONObject - 如何获取值?

2022-08-31 12:52:01

我在 http://json.org/javadoc/org/json/JSONObject.html 上使用java类。

以下是我的代码片段:

String jsonResult = UtilMethods.getJSON(this.jsonURL, null);
json = new JSONObject(jsonResult);

getJSON返回以下字符串

{"LabelData":{"slogan":"AWAKEN YOUR SENSES","jobsearch":"JOB SEARCH","contact":"CONTACT","video":"ENCHANTING BEACHSCAPES","createprofile":"CREATE PROFILE"}}

如何获得“口号”的价值?

我尝试了页面上列出的所有方法,但没有一个有效。


答案 1
String loudScreaming = json.getJSONObject("LabelData").getString("slogan");

答案 2

如果它是您追求的更深层次的键/值,并且您没有在每个级别处理键/值数组,则可以递归搜索树:

public static String recurseKeys(JSONObject jObj, String findKey) throws JSONException {
    String finalValue = "";
    if (jObj == null) {
        return "";
    }

    Iterator<String> keyItr = jObj.keys();
    Map<String, String> map = new HashMap<>();

    while(keyItr.hasNext()) {
        String key = keyItr.next();
        map.put(key, jObj.getString(key));
    }

    for (Map.Entry<String, String> 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;
}

用法:

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

使用 https://stackoverflow.com/a/4149555/2301224 中的地图代码