Jolt Transform多对象数组转换异常,请求修正Spec
Jolt Transform 多对象数组拆分问题修正方案
当用Jolt Transform处理JSON数组时,单对象输入能正常拆分出独立条目,但多对象输入时,qty和type会被合并成列表,无法生成独立对象。以下是具体示例及修正后的Jolt规则:
输入示例
[ { "id": "1", "details": [ {"qty": 2, "type": "A"}, {"qty": 3, "type": "B"} ] }, { "id": "2", "details": [ {"qty": 1, "type": "C"}, {"qty": 4, "type": "D"} ] } ]
当前错误输出
[ { "id": "1", "qty": [2, 3], "type": ["A", "B"] }, { "id": "2", "qty": [1, 4], "type": ["C", "D"] } ]
期望输出
[ {"id": "1", "qty": 2, "type": "A"}, {"id": "1", "qty": 3, "type": "B"}, {"id": "2", "qty": 1, "type": "C"}, {"id": "2", "qty": 4, "type": "D"} ]
修正后的Jolt Spec
[ { "operation": "shift", "spec": { "*": { "details": { "*": { "@(2,id)": "[&1].id", "qty": "[&1].qty", "type": "[&1].type" } } } } }, { "operation": "shift", "spec": { "*": "[]" } } ]
规则说明
- 第一层
shift:遍历外层数组的每个对象(*),再遍历每个对象下的details数组(内层*)。通过@(2,id)向上两层获取当前对象的id,将id、qty、type绑定到同一索引的数组项,确保每个details子项都关联对应的父级id。 - 第二层
shift:将嵌套的数组结构扁平化,把每个子对象直接放入顶层数组,生成独立的条目。
原规则大概率是未正确处理多层数组的索引关联,导致同属一个父对象的qty和type被合并为列表。修正后的规则通过两次shift先建立正确的对象关联,再扁平化结构,完美解决多对象输入时的拆分问题。
内容的提问来源于stack exchange,提问作者himanshu dubey
相关产品推荐
相关产品推荐

