【Java / Hutool / JSON】多层嵌套的JSON数据,如何优雅地put和get? 您所在的位置:网站首页 Json对象嵌套对象如何转为java类 【Java / Hutool / JSON】多层嵌套的JSON数据,如何优雅地put和get?

【Java / Hutool / JSON】多层嵌套的JSON数据,如何优雅地put和get?

2024-07-16 18:08| 来源: 网络整理| 查看: 265

1.示例JSON数据

给你一个形如下面的多层嵌套的JSON数据,你现在准备怎么put和get值其中的【content】字段的值呢?

{ "messages": [{ "role": "user", "content": "生成快速排序算法" }], "model": "ziya-coding-34b", "max_tokens": 8192, "stream": true } 2.用Hutool之前以前

我可能会如下操作,有的朋友看了可能会笑,但我真的这么干过:

public static void main(String[] args) { String jsonStr = "{\n" + " \"messages\": [{\n" + " \"role\": \"user\",\n" + " \"content\": \"生成快速排序算法\"\n" + " }],\n" + " \"model\": \"ziya-coding-34b\",\n" + " \"max_tokens\": 8192,\n" + " \"stream\": true\n" + "}"; Map jsonMap = JSONUtil.toBean(jsonStr, Map.class); List list = (List)jsonMap.get("messages"); Map o = (Map)list.get(0); String content = o.get("content").toString(); System.out.println("content的值为:".concat(content)); }

如果你还在这么干,别怕,Hutool会出手。在项目中引入依赖:

cn.hutool hutool-all 5.8.23 3.用Hutool之后

使用JsonObject对象的getByPath和setByPath方法,参数传入一个表达式。

表达式解释:

"messages.0.content"

messages:Map的key,该key对应的值是一个列表,获得的内容如下: [{ "role": "user", "content": "生成快速排序算法" }], 0:索引值,获取上一级列表对象的索引为0的元素,获得的内容如下: { "role": "user", "content": "生成快速排序算法" } content:Map的key,获得目标key对应的值【生成快速排序算法】

现在获取content的值只需要一行代码:

①获取值: String jsonStr = "{\n" + " \"messages\": [{\n" + " \"role\": \"user\",\n" + " \"content\": \"生成快速排序算法\"\n" + " }],\n" + " \"model\": \"ziya-coding-34b\",\n" + " \"max_tokens\": 8192,\n" + " \"stream\": true\n" + "}"; JSONObject jsonObject = JSONUtil.parseObj(jsonStr); String content = jsonObject.getByPath("messages.0.content").toString(); ②设置值: String jsonStr = "{\n" + " \"messages\": [{\n" + " \"role\": \"user\",\n" + " \"content\": \"生成快速排序算法\"\n" + " }],\n" + " \"model\": \"ziya-coding-34b\",\n" + " \"max_tokens\": 8192,\n" + " \"stream\": true\n" + "}"; JSONObject jsonObject = JSONUtil.parseObj(jsonStr); jsonObject.putByPath("messages.0.content","新值");


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有