JOLT转换含emp嵌套的对象数组至指定JSON格式求助
解决JOLT保留嵌套
emp层的转换问题 我来帮你搞定这个JOLT转换的问题!你的核心问题是之前的Spec没有正确访问输入里emps数组元素内部的emp嵌套对象,导致字段提取路径出错,调整路径后就能得到你想要的结果了。
修正后的JOLT Spec
[ { "operation": "shift", "spec": { "emps": { "*": { // 遍历emps数组的每一个元素,&1会引用这个元素的索引 "emp": { // 先进入每个emps元素里的emp嵌套对象 "empId": "data.result[&1].emps[0].empId", "name": "data.result[&1].emps[0].name", "phoneNumber": "data.result[&1].emps[0].phone", "emailAddress": "data.result[&1].emps[0].email" } } } } }, { "operation": "default", "spec": { "data": { "result[]": { "*": { "emps[]": [] } } } } } ]
关键调整说明
- 嵌套路径修正:在Shift操作里新增了
"emp": {...}这一层,专门用来访问每个emps元素内部的嵌套对象,这样才能正确提取到empId、name等目标字段。 - 数组索引匹配:
data.result[&1]里的&1对应外层emps数组的索引,确保输入里的每个emps元素都能对应到result数组里的一个元素;emps[0]则是为了让每个result元素里的emps数组只包含一个处理后的对象,和你的期望输出结构完全匹配。 - Default操作保留:你原来的Default操作是为了保证空场景下的结构完整性,这个可以直接保留使用。
测试验证
- 输入INPUT:
{ "emps": [ { "emp": { "empId": "2A68", "emailAddress": "abc@xyz.com", "name": "abc", "userId": "82869", "userType": "none", "phoneNumber": "1234", "rank": "2" } } ] }
- 输出结果:
{ "data": { "result": [ { "emps": [ { "empId": "2A68", "name": "abc", "phone": "1234", "email": "abc@xyz.com" } ] } ] } }
完全符合你的期望输出。
内容的提问来源于stack exchange,提问作者Jay Shukla
相关产品推荐
相关产品推荐

