如何在JOLT中提取数组值并组装为指定结构的对象数组
问题原因
原有规则未给每个元素的role、id字段绑定同一个输出数组下标,每次向objectArray[]赋值都会新建独立对象,最终导致字段拆分。
修正后的JOLT规则
以下是通用实现方案,可自动适配任意数量array开头的输入数组:
[ { "operation": "shift", "spec": { "field1": { "array*": { "@": "tempArray" } } } }, { "operation": "shift", "spec": { "tempArray": { "*": { "#to": "objectArray[&1].role", "@": "objectArray[&1].id" } } } } ]
规则说明
- 第一步shift操作将
field1下所有array开头的数组合并为一维临时数组tempArray,你给出的示例中执行后tempArray值为["a","b","c","d"] - 第二步遍历临时数组的每个元素,将固定值
to写入role字段,当前元素值写入id字段,两个字段绑定同一个objectArray下标,保证输出结构符合预期。
内容的提问来源于stack exchange,提问作者Sheen
相关产品推荐
相关产品推荐

