83 votes

JSONObject - Comment obtenir une valeur ?

J'utilise une classe Java sur http://json.org/javadoc/org/json/JSONObject.html .

Voici mon extrait de code :

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

getJSON renvoie la chaîne suivante

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

Comment obtenir la valeur de « slogan » ?

J'ai essayé toutes les méthodes répertoriées sur la page, mais aucune d'entre elles n'a fonctionné.

155voto

phihag Points 89765
String loudScreaming = json.getJSONObject("LabelData").getString("slogan");

10voto

Baker Points 2243

Si vous recherchez une clé/valeur plus profonde et que vous n'avez pas affaire à des tableaux de clés/valeurs à chaque niveau, vous pouvez effectuer une recherche récursive dans l'arborescence :

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

Usage:

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

Utilisation du code de carte de https://stackoverflow.com/a/4149555/2301224

0voto

ravi creed Points 11

Vous pouvez essayer la fonction ci-dessous pour obtenir la valeur de la chaîne JSON,

 public static String GetJSONValue(String JSONString, String Field)
{
       return JSONString.substring(JSONString.indexOf(Field), JSONString.indexOf("\n", JSONString.indexOf(Field))).replace(Field+"\": \"", "").replace("\"", "").replace(",","");   
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X