jolt插件使用简介

jolt插件是使用Java语言编写的Json格式转化插件,它的主要作用是将一种json格式转化为另外一种json格式。它通过使用配置文件定义转换规则的方法,使得json转换可配置,只要输入的json格式是固定的(这一点很重要)就可以使用jolt插件进行转换。本篇主要介绍常用的几种转换方式,感兴趣的童鞋可以前往GitHub学习该插件的时使用方法。jolt插件GitHub地址:https://github.com/bazaarvoice/jolt/tree/jolt-0.1.0#Overview

一、jolt插件主要转换方法与基本使用
插件提供了5种转换方法:
(1)shift:主要作用是拷贝,将输入json的某个结构拷贝到目标json
(2)default:主要作用是设置默认值,如果输入json某个value不存在,则使用默认值补齐
(3)remove:主要作用是删除,可以删除输入json结构的某个结构
(4)sort:对key值进行排序
(5)cardinality:jsonobject和jsonarray之间的切换

注:5种转换方法分别对应了5个Java类:ShiftrDefaultrRemovrSortrCardinalityTransform ,如果定义的转换规则中只是使用到了以上转换中的一种,则可以使用这5个类的transform方法转换,如果转换规则中使用了两种或者两种以上的转换,则需要使用另外一个类Chainr中的转换方法。

Shiftr为例,java代码如下:

Object input = JsonUtils.classpathToObject("/jolt/Shiftr/sample01/input.json");  //读取input.json,如果input已经是一个java对象,则可以忽略这步
Object spec = JsonUtils.classpathToObject("/jolt/Shiftr/sample01/spec.json");   //使用Jolt自带的JsonUtils读取配置的转换规则spec.json作为一个object

Shiftr shiftr=new Shiftr(spec);  //创建shiftr对象,传入转化规则
Object output = shiftr.transform(input);   //转换input,得到output
System.out.println(JsonUtils.toJsonString(output));

input.json文件内容:

{
  "foo": {
    "barKey": "barValue",
    "bazKey": "bazValue"
  }
}

spec.json内容(具体怎样编写,后面会详细介绍):

{
  "foo": {
    "*": {
      "$": "test.&(1,0).id"
    }
  }
}

其他类型进行转换的时候与此类似,使用Chainr转换有点特殊,java代码如下:

Object input = JsonUtils.classpathToObject("/jolt/Chainr/sample01/input.json");
 List<Object> spec = JsonUtils.classpathToList("/jolt/Chainr/sample01/spec.json");     //和其他类型不同,此处配置的转换规则是一个jsonarray,需要转换为List

Chainr chainr = Chainr.fromSpec(spec);
Object output = chainr.transform(input);
System.out.println(JsonUtils.toJsonString(output));

chainr转换的时候,转换规则配置的是一个jsonarray,通过operation来区分不同的转换方法,operation取值有shift,default,remove,cardinality,sort,每一种转换的规则作为spec的value,如:

[{
  "operation": "shift",
  "spec": {
    "rating": {
      "quality": {
        "value": "SecondaryRatings.quality.Value",
        "max": "SecondaryRatings.quality
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值