JOLT多元素转置处理如何避免数组元素合并保持独立?
不需要新增额外的转换步骤,仅修改现有Spec即可实现需求。你当前遇到的字段合并问题,是因为原有Spec没有保留输入数组的索引层级,导致所有输入条目的同名字段都被聚合到根节点下。
修正后的Spec(适配多条输入输出独立数组的需求)
[ { "operation": "shift", "spec": { "*": { "@Value": "[&1].@DDD", "CCC": "[&1].CCC", "BBB": "[&1].BBB" } } } ]
逻辑说明
[&1]表示取当前节点的父层级索引(即输入数组中每个元素的下标)作为输出数组的下标,确保每个输入条目的转换结果存放在独立的数组元素中,不会出现字段合并。- 执行该Spec后,多条输入会直接输出你预期的独立对象数组结构。
兼容单条输入输出单个对象的完整Spec
如果你需要同时适配单条输入输出对象、多条输入输出数组的场景,可以追加一步cardinality操作:
[ { "operation": "shift", "spec": { "*": { "@Value": "[&1].@DDD", "CCC": "[&1].CCC", "BBB": "[&1].BBB" } } }, { "operation": "cardinality", "spec": { "*": "ONE" } } ]
该操作会自动把长度为1的输出数组转为单个对象,完全匹配你两个场景的预期输出。
内容的提问来源于stack exchange,提问作者Benjamin Bingham
相关产品推荐
相关产品推荐

