我正在使用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"}}
现在......我怎样才能获得'口号'的价值?
我尝试了页面上列出的所有方法,但都没有。
答案 0 :(得分:119)
String loudScreaming = json.getJSONObject("LabelData").getString("slogan");
答案 1 :(得分:8)
如果它是您之后的更深层次的键/值,并且您在每个级别不处理数组键/值>,您可以递归搜索树:
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");
中的地图代码
答案 2 :(得分:0)
您可以尝试使用以下函数从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(",","");
}
答案 3 :(得分:0)
这在搜索嵌套对象和嵌套数组中存在的键时可能会有所帮助。这是对所有情况的通用解决方案。
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class MyClass
{
public static Object finalresult = null;
public static void main(String args[]) throws JSONException
{
System.out.println(myfunction(myjsonstring,key));
}
public static Object myfunction(JSONObject x,String y) throws JSONException
{
JSONArray keys = x.names();
for(int i=0;i<keys.length();i++)
{
if(finalresult!=null)
{
return finalresult; //To kill the recursion
}
String current_key = keys.get(i).toString();
if(current_key.equals(y))
{
finalresult=x.get(current_key);
return finalresult;
}
if(x.get(current_key).getClass().getName().equals("org.json.JSONObject"))
{
myfunction((JSONObject) x.get(current_key),y);
}
else if(x.get(current_key).getClass().getName().equals("org.json.JSONArray"))
{
for(int j=0;j<((JSONArray) x.get(current_key)).length();j++)
{
if(((JSONArray) x.get(current_key)).get(j).getClass().getName().equals("org.json.JSONObject"))
{
myfunction((JSONObject)((JSONArray) x.get(current_key)).get(j),y);
}
}
}
}
return null;
}
}
可能性:
逻辑: