我有一个如下所示的 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条经验 获得超6个赞
创建表示 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
提交
取消