我有一個如下所示的 json 對象String jsonStr ="{\"m\":{\"p\":{\"0\":{\"ms\":{\"s\":1}}}}}";我想從中獲取 key 的值import org.codehaus.jettison.json.JSONArray;import org.codehaus.jettison.json.JSONException;import org.codehaus.jettison.json.JSONObject;JSONObject object = new JSONObject(jsonStr);System.out.println(object.get("m"));JSONObject mObj = (JSONObject) object.get("m");JSONObject pObj = (JSONObject) mObj.get("p");JSONObject oObj = (JSONObject) pObj.get("0");JSONObject sObj = (JSONObject) oObj.get("ms");System.out.println(sObj.get("s"));除了使用上面的邏輯之外,有沒有什么方法可以輕松獲取 key 的值
1 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
創建表示 JSON 的對象將是一種更簡潔的方法。然而,對于動態鍵,可以使用遞歸。
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
String jsonStr = "{\"m\":{\"p\":{\"0\":{\"ms\":{\"s\":1}}}}}";
Gson gson = new GsonBuilder().create();
Map data = gson.fromJson(jsonStr, Map.class);
Object value = obj.get(data, "s");
System.out.println(value); //1.0
//Input JSON as Map & key to search on
public Object get(Map data, String key) {
System.out.println(data);
if (!data.containsKey(key)) {
for (Object v : data.values()) {
return get((Map) v, key);
}
}
return data.get(key);
}
添加回答
舉報
0/150
提交
取消