为了账号安全,请及时绑定邮箱和手机立即绑定

从内部 json 对象获取键值

从内部 json 对象获取键值

白衣染霜花 2023-09-27 14:43:21
我有一个如下所示的 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);

}


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 44 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信