从内部 json 对象获取键值

我有一个如下所示的 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 的值


白衣染霜花
浏览 45回答 1
1回答

LEATH

创建表示 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 onpublic 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);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java