【Java】FastJson 利用JSONPath.eval快速获取目标json的属性值

一、需求场景:

JSON串格式化之后,JSON树的属性深度太长了

 

二、代码实现:

语法等效MySQL的JSON读取方式

方法调用的返回类型为Object,强转至String进行处理

/* 读取报告时间 */
Object reportDateEval = JSONPath.eval(jsonObject, "$.categories[0].children[0].data.timeStat.endTime");
String reportTime = reportDateEval.toString();
Date date = DateUtil.stringToDate(reportTime);

  

读取集合信息

 返回类型还是按JSON串的方式处理,用一个具体类入参转换

Object vulnListJson = JSONPath.eval(jsonObject, "$.categories[3].children[0].data.vulns_info.vuln_distribution.vuln_list");
List<DbcpReportZipUtil.RT04Data> objects = JSON.parseArray(vulnListJson.toString(), DbcpReportZipUtil.RT04Data.class);
for (DbcpReportZipUtil.RT04Data rt04Data : objects) {
    consumer.accept(ImpPtRecord.builder()
            .ptReportTime(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())
            .ptIssueIp(rt04Data.getTarget())
            .ptIssueName(rt04Data.getI18n_name())
            .ptIssueTag(rt04Data.getVuln_level())
            .ptIssueDesc(String.join(", ", rt04Data.getI18n_description()))
            .build());
}

  

 

posted @ 2024-08-27 09:01  emdzz  阅读(295)  评论(0编辑  收藏  举报