需求
好久没写过博客了,今天说一下根据JSON字符串获取指定JSON下的数据。
准备
导入maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
json文本
示例代码
@Test
public void getPostmanClient() throws IOException {
Response response = ESClient.getPostmanClient("{\"aggs\":{\"0\":{\"terms\":{\"field\":\"resource.keyword\",\"order\":{\"_count\":\"desc\"},\"size\":15}}},\"size\":0,\"fields\":[{\"field\":\"@timestamp\",\"format\":\"date_time\"},{\"field\":\"logdate\",\"format\":\"date_time\"}],\"script_fields\":{},\"stored_fields\":[\"*\"],\"runtime_mappings\":{},\"_source\":{\"excludes\":[]},\"query\":{\"bool\":{\"must\":[],\"filter\":[{\"range\":{\"@timestamp\":{\"format\":\"strict_date_optional_time\",\"gte\":\"2023-04-23T09:00:00.000Z\",\"lte\":\"2023-04-24T09:00:00.000Z\"}}}],\"should\":[],\"must_not\":[]}}}");
String result = response.body().string();
// 解析JSON字符串为JSONObject对象
JSONObject jsonObject = JSONObject.parseObject(result);
// 获取"aggregations"下的"0"字段
JSONObject aggregations = jsonObject.getJSONObject("aggregations").getJSONObject("0");
// 遍历"buckets"并输出key和value
JSONArray buckets = aggregations.getJSONArray("buckets");
System.out.println(buckets);
for(int i = 0; i < buckets.size(); i++) {
// 获取每一个JSON对象
JSONObject bucket = buckets.getJSONObject(i);
// 获取JSON对象中键值为"key"的值
String key = bucket.getString("key");
// 根据键值为"doc_count"拿到JSON的int值
int value = bucket.getIntValue("doc_count");
System.out.println("key:" + key + ", value:" + value);
}
}