Подтвердить что ты не робот

JSONObject - Как получить значение?

Я использую класс java на http://json.org/javadoc/org/json/JSONObject.html.

Ниже приведен фрагмент кода.

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"}}

Теперь... как мне получить значение "слоган"?

Я пробовал все методы, перечисленные на странице, но никто из них не работал.

4b9b3361

Ответ 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");

Использование кода карты из fooobar.com/info/25136/...