关于get_json_object取重复key值的问题

Tokyofrog 2022-06-28 11:52:49

数据的需求排期太多,无奈不懂编程的自己只能硬着头皮边查边学,无奈没有进展求助各位。

在clickhouse的数据库中查询某个数据集,现在希望从

"audit_data":[{"A":"a1","B":"b1","C":3,"D":"d1"},{"A":"a2","B":"b2","C":4,"D":"d2"}]

这个字段将重复的key后的值都取出来,并用逗号隔开(a1,b1,c1,d1,a2,b2,c2,d2)。查询了一下取多个值的方法可以用json_tuple函数或者重复使用get_json_object,但是网上都没找到应对key重复的办法,还请各位赐教。

...全文
508 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
simple 2022-06-29
  • 打赏
  • 举报
回复

key是不能重复的,你这个是数组。
参考这个吧

        String response = "{\r\n"
                + "    \"total\":2,\r\n"
                + "    \"count\":2,\r\n"
                + "    \"data\":{\r\n"
                + "    \"openid\":[\"OPENID1\",\"OPENID2\"]},\r\n"
                + "    \"next_openid\":\"NEXT_OPENID\"\r\n"
                + "}";

        
        JsonNode jNode = JsonUtils.jsonNodeOf(response);
        System.out.println(jNode.toString());
        int total = jNode.get("total").asInt();
        int count = jNode.get("count").asInt();
        next_openid = jNode.get("next_openid").asText();
        System.out.println("total=" + total);
        System.out.println("count=" + count);
        System.out.println("next_openid=" + next_openid);

        List<String> list = new ArrayList<String>();
        JsonNode jOpenid = jNode.get("data").get("openid");
        if (jOpenid.isArray()) {
            for (int i = 0; i < jOpenid.size(); ++i) {
                list.add(jOpenid.get(i).asText());
            }
        }

用的是百度的库

import com.baidubce.util.JsonUtils;

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧