Jolt转换:处理同一键值为字符串或对象的JSON数据
Jolt转换:统一处理location字段的对象/字符串类型
可以通过以下Jolt转换规则实现需求,核心是利用shift操作的路径匹配优先级,分别处理location为对象和字符串的情况:
[ { "operation": "shift", "spec": { "*": { "id": "[&1].id", "location": { "value": "[&2].loc", "@(0)": "[&2].loc" } } } } ]
规则说明:
*:遍历输入数组中的每一个元素"id": "[&1].id":直接将原元素的id字段映射到结果数组对应位置的id字段,[&1]表示当前数组元素的索引位置- 处理
location字段时:"value": "[&2].loc":当location是包含value字段的对象时,将location.value的值赋值给结果的loc字段,[&2]表示向上回溯两层(回到当前数组元素的层级)"@(0)": "[&2].loc":当location是字符串时,@(0)表示取location节点自身的值,赋值给结果的loc字段
由于Jolt会优先匹配更具体的路径(location.value比@(0)路径更明确),所以两种类型的location会被正确处理,不会产生冲突。
输入输出验证
输入数据:
[ { "id": "id1", "location": { "value": "loc-123" } }, { "id": "id2", "location": { "value": "loc-789" } }, { "id": "id3", "location": "loc-666" } ]
转换后输出:
[ { "id": "id1", "loc": "loc-123" }, { "id": "id2", "loc": "loc-789" }, { "id": "id3", "loc": "loc-666" } ]
内容的提问来源于stack exchange,提问作者ayan_2587
相关产品推荐
相关产品推荐

