Arrays jq:将带有数组的JSON文件转换为CSV转换文件?
我正在尝试使用jq将JSON输出转换为CSV 这里是input.json(精简了很多—我可能有多达600个数组元素,但每个元素的数量相同): 迄今为止,我最好的尝试是:Arrays jq:将带有数组的JSON文件转换为CSV转换文件?,arrays,json,csv,jq,Arrays,Json,Csv,Jq,我正在尝试使用jq将JSON输出转换为CSV 这里是input.json(精简了很多—我可能有多达600个数组元素,但每个元素的数量相同): 迄今为止,我最好的尝试是: jq --raw-output 'keys , .[] | @csv' 这使得 "drivingDifficultyIndex","iconCode","latitude","longitude","observationTimeUtcIso","precip1Hour" 39.582,39.582,39.582 26.675
jq --raw-output 'keys , .[] | @csv'
这使得
"drivingDifficultyIndex","iconCode","latitude","longitude","observationTimeUtcIso","precip1Hour"
39.582,39.582,39.582
26.675,26.675,26.675
0,34,34
31,11,11
"2016-06-26T00:20:00+0000","2016-06-26T01:20:00+0000","2016-06-26T02:20:00+0000"
0,0.1,0.5
给出了一些很好的提示,但最终还是以行(如上面所示)而不是列的形式显示数据
我想要的是:
"latitude","longitude","drivingDifficultyIndex","iconCode","observationTimeUtcIso","precip1Hour"
39.582, 26.675, 0, 31, \2016-06-26T00:20:00+0000\", 0
39.582, 26.675, 34, 11, \"2016-06-26T01:20:00+0000\", 0.1
39.582, 26.675, 34, 11, \"2016-06-26T02:20:00+0000\", 0.5
每个数组中有多达600个元素,我需要CSV文件为每个数组提供一个单独的列;第2行向下需要换位
有人能帮jq生产我想要的产品吗
谢谢
更新:
jq --raw-output 'keys_unsorted, map(.[0]) , map(.[1]), map(.[2]) |@csv'
给出了我想要的,例如上面的3个数组成员。但是,我如何才能使这一点起作用,以解释更大(未知)数量的数组元素呢?事实上,使用
转置
可以按照您设想的路线提供简单的单线解决方案:
( keys_unsorted, ([.[]] | transpose)[]) | @csv
对于示例数据,使用-r选项调用jq会产生:
"latitude","longitude","drivingDifficultyIndex","iconCode","observationTimeUtcIso","precip1Hour"
39.582,26.675,0,31,"2016-06-26T00:20:00+0000",0
39.582,26.675,34,11,"2016-06-26T01:20:00+0000",0.1
39.582,26.675,34,11,"2016-06-26T02:20:00+0000",0.5
事实上,使用
transpose
可以按照您的设想提供简单的单线解决方案:
( keys_unsorted, ([.[]] | transpose)[]) | @csv
对于示例数据,使用-r选项调用jq会产生:
"latitude","longitude","drivingDifficultyIndex","iconCode","observationTimeUtcIso","precip1Hour"
39.582,26.675,0,31,"2016-06-26T00:20:00+0000",0
39.582,26.675,34,11,"2016-06-26T01:20:00+0000",0.1
39.582,26.675,34,11,"2016-06-26T02:20:00+0000",0.5
可能重复的可能重复的那是可怕的。我一直在浏览手册,但错过了那个功能!非常感谢……太棒了。我一直在浏览手册,但错过了那个功能!非常感谢。。。