使用Jolt转换对象数组并将部分字段迁移至嵌套coding数组
Jolt数组转换:将diagnoses元素字段嵌套入coding数组
需要处理diagnoses对象数组的Jolt转换,要求把每个元素里除了sequence之外的所有字段,都放到嵌套的coding数组中。目前单个对象的转换逻辑可行,但数组形式的转换还没搞定。
输入JSON
{ "diagnoses": [ { "version": "20230607", "code": "A100", "display": "Diagnosis 1", "sequence": 1 }, { "version": "20230607", "code": "B100", "display": "Diagnosis 2", "sequence": 2 } ] }
期望输出JSON
{ "diagnoses": [ { "coding": [ { "version": "20230607", "code": "A100", "display": "Diagnosis 1" } ], "sequence": 1 }, { "coding": [ { "version": "20230607", "code": "B100", "display": "Diagnosis 2" } ], "sequence": 2 } ] }
单个对象的转换参考
单个对象输入
{ "version": "20230607", "code": "A100", "display": "Diagnosis 1", "sequence": 1 }
单个对象的Jolt规格
[ { "operation": "shift", "spec": { "sequence": "&", "*": "coding[0].&" } } ]
数组场景的Jolt解决方案
针对数组形式的输入,只需要在shift操作的spec里,先遍历diagnoses数组的每个元素,再对每个元素套用单个对象的转换逻辑即可:
[ { "operation": "shift", "spec": { "diagnoses": { "*": { "sequence": "diagnoses[&1].&", "*": "diagnoses[&1].coding[0].&" } } } } ]
逻辑说明
diagnoses.*匹配diagnoses数组里的每一个元素,&1代表当前元素的数组索引,保证输出数组的顺序和输入一致- 对每个元素里的
sequence字段,直接映射到输出数组对应位置的sequence字段 - 其他所有字段(用
*匹配),都映射到对应位置的coding[0]对象下,保持字段名不变
内容的提问来源于stack exchange,提问作者johnnieb
相关产品推荐
相关产品推荐

