如何用JOLT将events_retargeting_groups数组转为键值对并保留原JSON所有键?
可以通过JOLT实现该转换
完全可以用JOLT的shift操作完成需求——保留原JSON所有字段,仅将events_retargeting_groups从数组结构转为以子对象id为键、value为对应值的对象结构。以下是针对两种输入场景的JOLT规范:
场景1:单个JSON对象转换
针对你提供的单个对象输入,对应的JOLT转换规则如下:
[ { "operation": "shift", "spec": { "*": "&", // 原样保留所有非目标字段 "events_retargeting_groups": { "*": { "value": "events_retargeting_groups.@(1,id)" // 将子对象的value映射到以其id为键的位置 } } } } ]
场景2:JSON数组转换
针对包含多个对象的数组输入,转换规则需要遍历数组中的每个元素,对每个元素单独处理:
[ { "operation": "shift", "spec": { "*": { // 遍历数组中的每一个对象 "*": "[&1].&", // 保留当前数组元素的所有原字段 "events_retargeting_groups": { "*": { "value": "[&3].events_retargeting_groups.@(1,id)" // &3对应数组元素的索引,确保转换后归属正确的数组位置 } } } } } ]
规则说明
*: "&":匹配所有字段并原样保留,确保原JSON的其他键不会丢失。@(1,id):JOLT的路径引用语法,获取当前子对象(层级1)的id值,作为新对象的键。- 数组场景中的
[&3]:因为嵌套层级关系(数组元素→events_retargeting_groups→子对象),&3指向最外层数组的元素索引,保证每个数组元素的转换结果独立归属到原位置。
内容的提问来源于stack exchange,提问作者takotsubo
相关产品推荐
相关产品推荐

