如何在Jolt中使用shift和modify-overwrite-beta转换JSON数据并解析原理
Jolt转换实现方案
转换规则
[ { "operation": "modify-overwrite-beta", "spec": { "*": { "data": { "fullName": "=concat(@(1,firstName), ' ', @(1,lastName))" } } } }, { "operation": "shift", "spec": { "*": { "data": { "id": { "@(1,fullName)": "@(1)" } } } } } ]
工作机制解释
第一步:modify-overwrite-beta 操作
这个操作的核心是生成全名:
*通配符匹配输入数组里的每一项元素;- 针对每个元素下的
data节点,新增fullName字段,通过=concat函数把同层级的firstName和lastName用空格拼接; @(1,firstName)表示向上回溯1层(从当前fullName节点到父节点data),获取data下的名字值,@(1,lastName)同理获取姓氏值。
第二步:shift 操作
这个操作负责重组结构,把ID作为对象键:
- 同样用
*遍历数组中的每个元素; - 进入
data节点后定位到id字段:@(1,fullName)回溯1层到data节点,拿到第一步生成的全名;@(1)指代当前id字段的具体值,将其作为最终输出对象的键;- 把全名映射到对应ID为键的对象中,所有元素处理完成后就得到目标结构。
内容的提问来源于stack exchange,提问作者Fatemeh
相关产品推荐
相关产品推荐

