如何使用Jolt脚本将扁平化JSON转换为聚合结构化JSON
使用Jolt聚合扁平化JSON的联系电话数据
需求说明
将包含同一人员多条联系电话的扁平化JSON数据,聚合为结构化JSON,把多个联系电话整合为数组形式。
输入扁平化JSON
[ { "person.first_name": "Peter", "person.last_name": "Thomson", "person.contact.phone": 123 }, { "person.first_name": "Peter", "person.last_name": "Thomson", "person.contact.phone": 987 } ]
期望输出结构化JSON
{ "person": { "first_name": "Peter", "last_name": "Thomson", "contact": [ { "phone": 123 }, { "phone": 987 } ] } }
Jolt转换脚本
[ { "operation": "shift", "spec": { "*": { "person.first_name": "@(1,person.last_name).first_name", "person.last_name": "@(1,person.last_name).last_name", "person.contact.phone": "@(1,person.last_name).contact[#2].phone" } } }, { "operation": "shift", "spec": { "*": { "*": "person.&", "contact": "person.&" } } } ]
脚本解释
- 第一个
shift操作:- 遍历输入数组的所有条目(通配符
*) - 以人员的
last_name为键,将同一人员的first_name、last_name归拢到同一个对象下 - 把每个条目里的电话信息,依次存入对应人员的
contact数组,#2用于生成递增的数组索引,确保每个电话作为独立对象存在
- 遍历输入数组的所有条目(通配符
- 第二个
shift操作:- 将分组好的人员信息整体迁移到顶层的
person节点,调整为期望的最终结构
- 将分组好的人员信息整体迁移到顶层的
内容的提问来源于stack exchange,提问作者mycuser
相关产品推荐
相关产品推荐

