JOLT:如何将单个对象数据合并到多个对象并解决字段异常?
JOLT转换方案:将info数据合并到data数组的每个对象中
需求
将输入JSON中info键下的country字段合并到data数组的每一个对象中,同时将原value字段重命名为price,最终每个对象的country需为单个值而非数组。
输入JSON
{ "data": [ { "item": "banana", "value": 3 }, { "item": "banana", "value": 3 } ], "info": { "place": [ { "country": "canada" } ] } }
当前问题
原JOLT转换后,第一个对象的country是数组,且第二个对象未添加country字段,仅用cardinality操作无法同时解决这两个问题。
正确的JOLT转换代码
[ { "operation": "shift", "spec": { // 先将info中的country提取到顶层临时存储 "info": { "place": { "0": { "country": "country" } } }, // 遍历data数组的每个元素,映射字段并添加country "data": { "*": { "item": "[&1].item", "value": "[&1].price", "@(2,country)": "[&1].country" } } } }, { // 移除顶层临时存储的country字段 "operation": "remove", "spec": { "country": "" } } ]
转换后输出结果
[ { "item": "banana", "price": 3, "country": "canada" }, { "item": "banana", "price": 3, "country": "canada" } ]
内容的提问来源于stack exchange,提问作者lion
相关产品推荐
相关产品推荐

