使用Jolt转换JSON数组为独立对象的问题求助
Jolt转换问题:将嵌套用户列表转为单个用户对象数组
问题分析
你当前的Jolt Spec使用[&3]作为数组索引,这个索引指向外层products数组的位置,导致同一个product下的所有用户被合并到同一个数组元素中,最终输出是2个元素的数组(对应2个product),每个元素内的字段都是数组类型,和期望的每个用户单独成为数组元素的需求不符。
修正后的Jolt Spec
[ { "operation": "shift", "spec": { "totalApplication": { "products": { "*": { "userList": { "*": { "userName": "[].name", "email": "[].email", "userId": "[].userId", "@(2,productName)": "[].additionalAttribute.productName", "lastActive": "[].additionalAttribute.lastActive", "@(4,applicationName)": "[].additionalAttribute.applicationName" } } } } } } } ]
关键说明
- 使用
[]作为目标数组路径:Jolt会自动为每个遍历到的user对象在输出数组中创建一个新元素,实现每个用户单独成项。 - 路径索引修正:
@(2,productName):从当前user层级向上2层(即当前product节点)获取productName值;@(4,applicationName):从当前user层级向上4层(即totalApplication节点)获取applicationName值;- 其他字段直接映射到对应属性名,确保每个字段是单个用户的对应值而非数组。
验证输出
修正后的Spec转换后会完全匹配你给出的期望输出,每个用户对象独立存在于数组中,additionalAttribute包含对应的产品和应用信息。
内容的提问来源于stack exchange,提问作者Ankur Saxena
相关产品推荐
相关产品推荐

