jmespath java 使用
日常中我们经常需要进行json 数据类型的处理,jmespath 是一个很不错的选择,简单强大,以下是关于java代码
集成的使用(一个简单示例,进行multiselect 的处理)
参考使用
- pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dalong</groupId>
<artifactId>myjmespath</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>io.burt</groupId>
<artifactId>jmespath-jackson</artifactId>
<version>0.5.0</version>
</dependency>
</dependencies>
</project>
- java 代码
package com.dalong;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.burt.jmespath.Expression;
import io.burt.jmespath.JmesPath;
import io.burt.jmespath.jackson.JacksonRuntime;
import java.io.IOException;
public class Application {
private static final ObjectMapper oj =new ObjectMapper();
public static void main(String[] args) throws IOException {
String info = "[\n" +
" {\n" +
" \"name\":\"dalong\",\n" +
"\"age\":22,\n" +
"\"version\":\"v1\"\n" +
"},\n" +
"{\n" +
" \"name\":\"dalongrong\",\n" +
"\"age\":221,\n" +
"\"version\":\"v2\"\n" +
"}\n" +
"]";
JmesPath<JsonNode> jmespath = new JacksonRuntime();
Expression<JsonNode> expression = jmespath.compile("[].{Name:name,Age:age,Version:version,Type:'mydemp'}");
JsonNode input = oj.readTree(info);
JsonNode result = expression.search(input);
System.out.println(result);
}
}
- 效果
说明
jmespath 是一个很强大的json 处理指南,很值得学习下,具体可以参考jmespath 官方文档,当然aws 也提供了一个java 的包装,也是可以使用的(比较活跃)
参考资料
https://github.com/burtcorp/jmespath-java
https://github.com/aws/aws-sdk-java/tree/master/jmespath-java
http://jmespath.org/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-08-11 rust crates 国内镜像加速配置
2018-08-11 prisma middleware 简化 graphql resolver 编写的类库
2018-08-11 prisma graphql 集成timescaledb