jolt语法

1.jolt语法规则说明

jolt是用来在json格式数据之间做数据转换处理的规则描述语言。它的主要作用是将一种json格式转化为另一种json格式。其原理是将输入json对象按层级结构遍历,匹配每个层级的属性,将匹配到的属性名或值转换成目标json对象指定层级下的属性。

Jolt自身也使用json格式来描述规则定义。通常使用一个json数组来表示多个转换处理步骤,每个转换步骤用一个json对象来表示。Jolt语言格式如下:

每个json格式表示的转换步骤都包含上面①operation和②spec两个属性描述

①operation表示转换场景,下文介绍主要转换场景及使用方法。

(1)shift:  主要作用是拷贝,将输入json的某个结构拷贝到目标json。转换过程主要做属性名称映射,层级结构转换等。
(2)default:主要作用是设置默认值,如果输入json某个value不存在,则使用默认值补齐
(3)remove: 主要作用是删除,可以删除输入json结构的某个结构
(4)sort:  对key值进行排序(暂无应用场景,无需关注)

②spec表示转换规则,转换规则在不同转换场景中有不同的应用,主要用于数据属性名变更,层级结构转换,设置属性默认值,删除某个属性值等。

理解下图:匹配,输入

shift转换的通配符

通配符的匹配优先级 是在精确 匹配之后的

1."*"

仅可以匹配输入json的key,不能匹配value。使用 “*”通配符的时候,需要保证所匹配的key在输入json中处于同一层级

*  是匹配输出数据一个节点下的所有子节点,匹配当前路径下的所有key

但是不会匹配已经被精准匹配过的节点

2."&"

& 的深入理解:&其实是取    *(或其他)  匹配到的节点的 key

rating-*匹配到rating-quality,rating-color,在Spec中,将匹配到的子节点()输出给SecondaryRatings.&(0,1).value

&(0,1)

匹配到第一个通配符*匹配到的key值

&(1,0) == &(1) == &1

 [&1]

 

 

“$”符

和"&"匹配的规则类似,但是使用在表达式左边。

但是使用在匹配数据中(表示式左边),取json数据的key作为值输入到目标表达式中

"@"符

"@"和"$"用法类似,不过"@"取得是指定key的value值,而“$”取的是指定位置key值

@符匹配到所在层级上一级的所有值作为输出

总结

通配符匹配,取值的规则,可以根据通配符在表达式中的位置来判断

如果在表达式右边,说明是要传输值,这时无论匹配到的是key值还是value值都要作为output的key值使用

如果在表达式左边,说明是要匹配值,这时无论匹配到是key值还是value值都要作为output的value值使用

*一般使用在表达式左边,匹配key值,传输key对应的value

&一般使用在表达式右边,匹配output需要的key值

$一般使用在表达式左边,匹配到key值,传输key对应的key

@一般使用在表达式左边(不固定),匹配key值对应的value,传输value

 "#"符

"|"符

输入json

{
"sex":"male"

}

default转换

default转换比较简单,主要作用是预先设置一些默认值。只有当输入json中不存在该属性值时,才会使用默认值进行补齐。如果输入json中已存在某个属性,则默认值设置不生效

remove转换

remove也很简单,作用是删除input中的某些值。如果需要删除input中的个别字段,而其他字段保持不变,建议使用该转换

modify转换 

modify转换用于修改输入json的属性值,可选的operation值有:

1)、"modify-default-beta":用于向输出json添加输入json中不存在的属性并给属性赋值,若输入json中属性已存在,则不执行修改操作

2)、” modify-overwrite-beta”:用于覆盖修改输入json中的属性值,若输入json中属性不存在,则添加;若输入json中属性已存在,则修改该值 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值