如何使用jq将myresponse.json文件转换为指定列格式的CSV文件
解决方案
没问题,这就帮你搞定用jq把JSON转换成指定格式CSV的需求!
你可以直接用这条jq命令来处理myresponse.json文件:
jq -r ' ["0", "1", "5", "6"] as $cols | ([$cols[]] | @csv) , (.content.resources | from_entries | [$cols[] as $k | .[$k]]) | @csv ' myresponse.json > output.csv
命令拆解说明:
["0", "1", "5", "6"] as $cols:先定义我们需要提取的列对应的id列表,存为变量$cols,后续全程复用这个顺序保证列对齐。([$cols[]] | @csv):把表头数组转换成CSV格式,输出第一行的列标题0,1,5,6。,:用来衔接表头和后续的数据行,确保输出连续。.content.resources | from_entries:把resources数组转换成键值对对象(键是每个元素的id字符串,值是对应的value),这样就能通过id直接快速取值。[$cols[] as $k | .[$k]]:按照$cols的顺序,依次取出对应id的value,组成一个有序数组。@csv:把数组转换成标准CSV行,自动给字符串类型的值(比如你的日期)加上双引号,完全符合你要的格式。
执行这条命令后,output.csv里的内容就会和你期望的一致:
0,1,5,6 52.51742935180664,13.392845153808594,"2021-02-09T13:15:15Z",20.754192352294922 52.51742935180664,13.392845153808594,"2021-02-09T13:15:15Z",20.754192352294922
内容的提问来源于stack exchange,提问作者Gianmarco Plutino
相关产品推荐
相关产品推荐

