当前位置:网站首页>jolt语法
jolt语法
2022-08-03 06:34:00 【bobo洁厕灵】
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):

“$”符
和"&"类似
$符所在层级的上一级匹配的所有key的值作为输出
但是使用在匹配数据中(表示式左边),取json数据的key作为值输入到目标表达式中

"@"符
"@"和"$"用法类似,不过"@"取得是指定位置的value作为目标Json的value值,而“$”取的是指定位置的key作为目标Json的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中属性已存在,则修改该值

边栏推荐
猜你喜欢
随机推荐
【多线程进阶】--- 常见锁策略,CAS,synchronized底层工作原理,JUC,线程安全的集合类,死锁
第四章:架构,Architecture
模型训练前后显卡占用对比、多卡训练GPU占用分析【一文读懂】
9月考,如何选择靠谱正规的培训机构?
1066 Root of AVL Tree // AVL平衡二叉搜索树模板
信息学奥赛一本通T1448:深搜的剪枝技巧 电路维修
unity 摄像机旋转拖拽缩放场景
关于任命韩文弢博士代理NOI科学委员会主席的公告
【OpenCV】 - 显示图像API之imshow()对不同位深度(数据类型)的图像的处理方法
伦敦银现货市场如何使用多条均线?
pt-online-schema-change工具使用的一次
华为设备BFD配置命令
consul理解
数仓埋点体系与归因实践
信息学奥赛一本通T1449:魔板
Flink的Exactly-Once、状态机制、watermark机制
信息学奥赛一本通T1446:素数方阵
nacos-2.0.3启动报错出现no datasource set的坑
MYSQL存储过程注释详解
spark中的bykey











