如何使用JQ通过JSON模板转换原始JSON数据结构
用JQ实现数据映射的解决方案
你可以直接执行以下JQ命令完成转换:
jq 'map({ id: .id, practitioner: .practitioner, patient: { name: (.patientName // .name), familyName: (.patientFamilyName // .familyName) } })' data.json
命令逻辑说明
- 外层
map()用来遍历源数据数组的每一个元素,逐个转换结构 id和practitioner字段和源数据结构完全一致,直接取值即可patient的name字段用//运算符做 fallback 处理:优先取当前元素的patientName属性,不存在的话就取name属性,适配你给出的两种不同的源数据字段命名familyName字段同理做兼容处理,优先取patientFamilyName,不存在则取familyName
如果需要把模板逻辑封装成JQ函数复用,也可以用以下写法:
def template: { id: .id, practitioner: .practitioner, patient: { name: (.patientName // .name), familyName: (.patientFamilyName // .familyName) } }; map(template)
把上面的内容保存为template.jq,运行jq -f template.jq data.json就能得到同样的结果。
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

