java解析多层嵌套json字符串

在java 程序中,经常会涉及到各种变量值提取的问题,下面给出简单的示例及说明:

  • JSON实际上也是键值对("key":"value"),key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)

  • value如果是字符串,用jsonobj.getString("key")获取

  • value如果是数字,用jsonobj.getIntValue("key"), jsonobj.getFloatValue("key"),jsonobj.getInteger("key")等基本数据类型及其包装类的方法获取

  • value如果是布尔值,用jsonobj.getBoolean("key"), jsonobj.getBooleanValue("key")获取

  • value如果是数组,用jsonobj.getJSONArray("key")获取

  • value如果是Object对象,用jsonobj.get("key")获取

  • value如果是JSONObject对象,用jsonobj.getJSONObject("key")获取

示例代码:

// result示例 (json字符串形式)
// {"code":"ok","data":{"msg":"success","code":200,"data":{"total":1,"cmd_groups":["SOQE"]}}}

// 将json字符串转换成jsonObject对象
JSONObject jsonObject = JSONObject.parseObject(result); 

// 方法1:按层级依次取值
JSONObject subData = data.getJSONObject("data");
JSONArray cmdGroups = subData.getJSONArray("cmd_groups");
log.info("data: {}, cmdGroups: {}", data, cmdGroups);

// 方法2: 链式取值
JSONArray demo = jsonObject.getJSONObject("data").getJSONObject("data").getJSONArray("cmd_groups");
log.info("demo: {}", demo);

参考:https://www.bbsmax.com/A/qVdebxYgzP/

你可能感兴趣的:(java,嵌套值提取)