如何通过Jolt实现placement数组展开与去数组化转换?
Jolt配置方案:解决两类JSON格式转换需求
示例源JSON
{ "id": ["1458720", "3561353", "14353163"], "placement": ["top", "middle"], "emptyPlacement": [] }
Jolt配置代码
[ // 1. 将字段数组转换为对象数组 { "operation": "shift", "spec": { "id": { "*": { "@": "[#2].id" } }, "placement": "&", "emptyPlacement": "&" } }, // 2. 拼接placement数组为字符串,空数组设为null { "operation": "modify-overwrite-beta", "spec": { "placement": "=join(',',@(1,&))", "emptyPlacement": ["=isNull(@(1,&))", null] } }, // 可选:移除值为null的字段(按需启用) { "operation": "remove", "spec": { "emptyPlacement": "" } } ]
配置说明
- Shift阶段:遍历
id数组的每个元素,将单个值映射为独立的{"id": "xxx"}对象,最终组合成对象数组;其他数组字段直接保留结构,留待后续处理。 - Modify阶段:
- 用
join函数将placement数组的元素以逗号为分隔符拼接成字符串; - 用
isNull判断空数组,将其值设为null。
- 用
- 可选Remove阶段:如果需求是直接移除空数组对应的字段而非设为
null,启用此操作即可删除值为null的字段。
预期输出(启用Remove阶段)
{ "id": [ {"id": "1458720"}, {"id": "3561353"}, {"id": "14353163"} ], "placement": "top,middle" }
内容的提问来源于stack exchange,提问作者dogyears
相关产品推荐
相关产品推荐

