Jolt转换问题:单对象转数组生成独立标签,求修正Spec
Jolt Shift 转换问题修正
问题说明
需将输入JSON中的单个purpose对象转换为数组,但当前Jolt Shift操作的Spec生成了独立的account标签,未嵌套在原结构中。
输入JSON
{"payload":{"settings":[{"account":[{"number":"1","purpose":{"type":"netflix"}}]}]}}
当前错误的Jolt Spec
[{"operation":"shift","spec":{"payload":{"*":"&1.&","settings":{"*":{"*":"&3.&2.[&1].&","account":{"*":{"*":"&5.&4.[&3].&2.[&1].&","purpose":{"0":{"@(2,purpose)":"&4.[&3].&2"},"type":{"@(2,purpose)":"&4.[&3].&2[]"}}}}}}}}]
错误输出
{"payload":{"settings":[{"account":[{"number":"1"}]}]},"account":[{"purpose":[{"type":"netflix"}]}]}
期望输出
{"payload":{"settings":[{"account":[{"number":"1","purpose":[{"type":"netflix"}]}]}]}}
问题分析
当前Spec存在两处核心问题:
- 处理
purpose时的输出路径逻辑错误,未正确继承payload.settings.account的层级结构,导致生成了外层独立的account节点 - 针对
purpose设计的0和type分支冗余且逻辑混乱,破坏了原有数据的嵌套关系
修正后的Jolt Spec
[ { "operation": "shift", "spec": { "payload": { "settings": { "*": { "account": { "*": { "number": "payload.settings.[&3].account.[&1].number", "purpose": { "@": "payload.settings.[&4].account.[&2].purpose[]" } } } } } } } } ]
验证结果
使用修正后的Spec处理输入JSON,可得到符合预期的输出:purpose被成功转换为数组,且完全嵌套在原有的account结构中,无多余外层节点。
内容的提问来源于stack exchange,提问作者Siva Ram
相关产品推荐
相关产品推荐

