编写jq命令提取患者JSON指定字段导出CSV无结果问题求助
jq提取JSON字段命令故障修复
原命令错误点排查
- 基础语法错误:
- r参数中间多余空格,且使用了中文全角单引号’,jq要求选项与参数紧接,所有引号必须使用英文半角符号 - 字段名与实际JSON结构不匹配:
- 唯一ID字段实际名为带空格的
Unique ID,并非无空格的UniqueID - 姓名相关字段实际名为
Patient First Name、Patient Last Name,并非简写的FirstName、LastName - LDL检测日期字段实际名为
LDLResultDate,并非自定义的LabResultDate - 血清肌酐节点拼写错误:实际节点名为
SerumCreatinine,对应水平字段为CreatinineLevel,原命令错写为SerumCreatine、CreatineLevel
- 唯一ID字段实际名为带空格的
- 格式校验提示:你提供的JSON片段开头缺失外层左大括号
{,执行命令前请先补全JSON结构保证格式合法,否则jq会抛出解析错误。
注:需求中要求的「Lab Test Date」对应JSON中两个实验室项的检测日期,以下方案默认提取LDL胆固醇的检测日期,如需提取肌酐检测日期可将对应字段替换为
.Patient.Labs.SerumCreatinine.CreatinineResultDate。
可直接运行的正确命令
无表头纯数据版本
jq -r '[.Patient."Unique ID", .Patient.Name."Patient First Name", .Patient.Name."Patient Last Name", .Patient.Labs.LDLCholesterol.LDLResultDate, .Patient.IntakeCriteria.InitialHgbA1c, .Patient.Labs.LDLCholesterol.LDLLevel, .Patient.Labs.SerumCreatinine.CreatinineLevel] | @csv' data.json > csvtest.out
带字段表头版本
如果需要导出的CSV第一行自带字段名,使用以下命令:
jq -r '["Patient Unique ID number","Patient First Name","Patient Last Name","Lab Test Date","HgbA1c Level","LDL Level","Creatinine Level"], [.Patient."Unique ID", .Patient.Name."Patient First Name", .Patient.Name."Patient Last Name", .Patient.Labs.LDLCholesterol.LDLResultDate, .Patient.IntakeCriteria.InitialHgbA1c, .Patient.Labs.LDLCholesterol.LDLLevel, .Patient.Labs.SerumCreatinine.CreatinineLevel] | @csv' data.json > csvtest.out
对应示例数据的纯数据输出结果为:
163983,"James","Manchester","5/6/2013",8.1,200,0.9
内容的提问来源于stack exchange,提问作者Shaishavi Patel
相关产品推荐
相关产品推荐

