JSONObject – Como obter um valor?

Eu estou usando uma class java em http://json.org/javadoc/org/json/JSONObject.html .

Segue-se o meu fragment de código.

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

getJSON retorna a seguinte string

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

Agora … como obtenho o valor de ‘slogan’?

Eu tentei todos os methods listados na página, mas nenhum deles funcionou.

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

Se é uma chave / valor mais profundo que você está procurando e você não está lidando com matrizes de chaves / valores em cada nível, você pode pesquisar recursivamente a 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; } 

Uso:

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

Usando o código do mapa em https://stackoverflow.com/a/4149555/2301224