使用JOLT转换JSON数组为指定字段结构的问题咨询
JOLT JSON 转换规则实现方案
核心转换需求
- 输入纯字符串数组
array转换为输出one_array数组- 原数组每个字符串值作为对应对象的
code字段值 - 每个对象的
description字段固定赋值为空字符串
- 原数组每个字符串值作为对应对象的
- 输入对象数组
array2转换为输出other_array数组- 兼容数组元素中不固定命名的字段
- 元素内的数值类内容统一映射为
id字段 - 元素内的类别类内容统一映射为
type字段
可直接使用的JOLT转换规则
[ { "operation": "shift", "spec": { "array": { "*": { "@": "one_array[&1].code", "#": "one_array[&1].description" } }, "array2": { "*": { "*": { "@": "other_array[&2].tmp[&1]" } } } } }, { "operation": "modify-overwrite-beta", "spec": { "other_array": { "*": { "id": "=join('', @(1.tmp[0]))", "type": "=join('', @(1.tmp[1]))" } } } }, { "operation": "remove", "spec": { "other_array": { "*": { "tmp": "" } } } } ]
规则逻辑说明
- 针对
array的处理:通过通配符遍历原数组的每个索引位置,将原位置的字符串值映射为one_array对应索引对象的code值;通过JOLT的字面量生成语法#,给每个对象固定写入空字符串作为description字段值。 - 针对
array2的处理:- 第一阶段通过通配符遍历每个数组元素下的所有字段(无字段名硬编码,兼容任意命名的字段),将字段值按原有顺序收集到临时
tmp数组中 - 第二阶段通过修改操作,提取临时数组的第一个元素(数值类内容)赋值给
id字段,第二个元素(类别类内容)赋值给type字段 - 第三阶段移除临时生成的
tmp字段,最终输出结构和目标要求完全一致
- 第一阶段通过通配符遍历每个数组元素下的所有字段(无字段名硬编码,兼容任意命名的字段),将字段值按原有顺序收集到临时
内容的提问来源于stack exchange,提问作者user2508615
相关产品推荐
相关产品推荐

