如何通过Jolt将对象键值对动态添加到数组中的每个对象
Jolt动态将data属性键值对添加到attributes数组每个对象中
输入示例
{"data": {"NAN_KEY": 1,"TEMP": 3},"attributes": [{"name": "attribute1","value": 3},{"name": "attribute2","value": 2}]}
期望输出
{ "attributes": [ {"name": "attribute1","value": 3,"NAN_KEY": 1,"TEMP": 3}, {"name": "attribute2","value": 2,"NAN_KEY": 1,"TEMP": 3} ] }
动态实现的Jolt规范
无需硬编码data中的字段,使用以下shift操作即可完成动态合并:
[ { "operation": "shift", "spec": { "attributes": { "*": { "@": "attributes[&1]", "@(2,data)": "attributes[&1]" } } } } ]
规范解释
shift操作符负责重新组织数据结构attributes: "*" 遍历attributes数组的每一个元素@保留当前数组元素的原有键值对(如name、value)@(2,data)向上回溯2层(从当前数组元素 →attributes节点 → 根节点)获取data对象,将其所有键值对动态合并到当前数组元素中attributes[&1]指定输出位置,&1表示当前遍历的数组索引,确保每个元素对应正确的输出位置
内容的提问来源于stack exchange,提问作者Peter Massarello
相关产品推荐
相关产品推荐

