51,411
社区成员
发帖
与我相关
我的任务
分享数据的需求排期太多,无奈不懂编程的自己只能硬着头皮边查边学,无奈没有进展求助各位。
在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重复的办法,还请各位赐教。
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;