Java 从内部json对象获取键值
我有一个json对象,如下所示Java 从内部json对象获取键值,java,json,Java,Json,我有一个json对象,如下所示 String jsonStr ="{\"m\":{\"p\":{\"0\":{\"ms\":{\"s\":1}}}}}"; 从这里我想得到键s的值 import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; JSONObject object
String jsonStr ="{\"m\":{\"p\":{\"0\":{\"ms\":{\"s\":1}}}}}";
从这里我想得到键s的值
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"));
没有使用上述逻辑,而是有任何方法可以轻松获取键s的值,创建表示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);
}
如果创建一个表示json的对象,您将有一行代码来访问它,那么这个对象是什么呢?对象值=对象获取(数据,“s”);obj是实现上述方法的类的对象。