Jolt转换时如何将根节点nationality字段加入输出数组每个对象
Jolt 嵌套JSON转换实现方案
核心实现逻辑
要将根节点的nationality字段注入到results数组的每一个输出对象中,只需在原有shift操作的results.*层级下,使用Jolt的上级节点取值语法@(2,nationality)获取根节点的国籍字段即可。
输入JSON示例(符合需求描述的典型结构)
{ "nationality": "CN", "results": [ { "gender": "male", "name": { "first": "张三", "last": "李" }, "location": { "city": "杭州", "state": "浙江" }, "email": "zhangsan@example.com", "dob": "1990-01-01", "phone": "13800138000" } ] }
完整正确的Jolt Spec
[ { "operation": "shift", "spec": { "results": { "*": { // 注入根节点的nationality字段到当前输出对象 "@(2,nationality)": "[&1].nationality", // 以下为原有字段提取逻辑,可根据实际字段名调整 "gender": "[&1].gender", "name": { "first": "[&2].firstName", "last": "[&2].lastName" }, "location": { "city": "[&2].city", "state": "[&2].province" }, "email": "[&1].email", "dob": "[&1].birthDate", "phone": "[&1].phone" } } } } ]
输出结果示例
[ { "nationality": "CN", "gender": "male", "firstName": "张三", "lastName": "李", "city": "杭州", "province": "浙江", "email": "zhangsan@example.com", "birthDate": "1990-01-01", "phone": "13800138000" } ]
语法说明
@(2,nationality)表示从当前节点向上回溯2层取值:当前节点为results数组的第N个元素,向上1层是results数组本身,向上2层是输入JSON的根节点,刚好是nationality字段所在的层级。如果原有spec的字段映射规则和示例不同,只需保留原有映射规则,新增"@(2,nationality)": "[&1].nationality"这一行到results.*对应的spec块中即可生效。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

