Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays jq:将带有数组的JSON文件转换为CSV转换文件?_Arrays_Json_Csv_Jq - Fatal编程技术网

Arrays jq:将带有数组的JSON文件转换为CSV转换文件?

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将JSON输出转换为CSV

这里是input.json(精简了很多—我可能有多达600个数组元素,但每个元素的数量相同):

迄今为止,我最好的尝试是:

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

可能重复的可能重复的那是可怕的。我一直在浏览手册,但错过了那个功能!非常感谢……太棒了。我一直在浏览手册,但错过了那个功能!非常感谢。。。