如何使用JOLT转换JSON数组值?含嵌套数组场景求助
JOLT转换解决方案:替换指定数组元素
单层数组场景
输入示例
[ { "key": "X1" }, { "key": "X20" }, { "key": "X100" } ]
JOLT转换规则
[ { "operation": "shift", "spec": { "*": { "key": { "X20": { "#Z": "[&2].key" }, "*": { "$": "[&2].key" } } } } } ]
规则说明
- 用
shift操作遍历数组的每个元素 - 匹配
key字段值为X20的条目,用#Z硬编码替换该值 - 其他
key值通过$保留原内容 &2用于定位到原数组的对应索引,保证替换后元素位置不变
嵌套数组场景
输入示例
[ { "id": "4", "array": [ { "key": "X1", "key2": "some_value1_1" }, { "key": "X20", "key2": "some_value1_2" } ] }, { "id": "5", "array": [ { "key": "X20", "key2": "some_value2_1" }, { "key": "X2", "key2": "some_value2_2" } ] } ]
JOLT转换规则
[ { "operation": "shift", "spec": { "*": { "id": "[&1].id", "array": { "*": { "key": { "X20": { "#Z": "[&4].array[&2].key" }, "*": { "$": "[&4].array[&2].key" } }, "*": "[&3].array[&1].&" } } } } } ]
规则说明
- 先遍历外层数组,用
[&1].id保留每个元素的id字段 - 针对每个元素下的
array数组,遍历其内部元素:- 对
key字段做匹配替换,X20替换为Z,其他值保留 - 用
"*": "[&3].array[&1].&"统一保留array元素中的其他字段(比如key2),无需逐个指定字段名
- 对
&4定位外层数组的索引,&2定位内部array的元素索引,确保整个JSON结构和元素位置不变
内容的提问来源于stack exchange,提问作者PeterZof
相关产品推荐
相关产品推荐

