Jolt Json转换工具
jolt是一个轻量级的json文件转换库,可以把输入的json按照你编写脚本模板输出成你想要的json文本,能实现同样功能的有我们常用的velocity模板引擎,但jolt跟轻量且更专注于json,且在实现一些简单的格式转换中,模板的编写与编写json一样简单
GitHub地址
https://github.com/bazaarvoice/jolt
在线调试
还提供了在线调试的网站
http://jolt-demo.appspot.com/
使用讲解
jolt有多个语法,本篇简单介绍一下日常使用比较多的【shift】从输入的json复制映射成目标json
引入依赖
<dependency>
<groupId>com.bazaarvoice.jolt</groupId>
<artifactId>jolt-core</artifactId>
<version>0.1.8</version>
</dependency>
<dependency>
<groupId>com.bazaarvoice.jolt</groupId>
<artifactId>json-utils</artifactId>
<version>0.1.8</version>
</dependency>
代码Demo
public static void main(String[] args) {
// 转换的配置
List<Object> specList = JsonUtils.classpathToList("/json/spec.json");
Chainr chainr = Chainr.fromSpec(specList);
// 来源json数据
Object input = JsonUtils.classpathToObject("/json/input.json");
Object transform = chainr.transform(input);
// 这里的转换配置和输入json都可以是json文本,只需要通过json工具转换成List<Object>和Object即可
System.out.println(input);
System.out.println(JsonUtils.toJsonString(transform));
}
示例
我们可以在在线网站上测试好,我们的映射脚本,注意脚本是一个json数组,可以使用多个语法去加工我们的json文本,operation的值是脚本的类型,spec是加工的表达式
字段属性可以直接映射来源json字段赋值到目标json中想要赋值的字段中
一个值映射给多个属性
如果想要解析数组集合,需要使用到“*”通配符,用来匹配到该集合下的所有元素
如果你映射的是一个集合的元素对象又嵌套有集合对象,需要注意的是注意层级关系
我们日常的数据转换中有很多枚举字段,可以使用“#”通配符来转换