Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
使用jq将json转换为csv,数组嵌套在数组中_Json_Nested_Export To Csv_Jq - Fatal编程技术网

使用jq将json转换为csv,数组嵌套在数组中

使用jq将json转换为csv,数组嵌套在数组中,json,nested,export-to-csv,jq,Json,Nested,Export To Csv,Jq,如何使用jq将这个json数组展平并写入csv文件,使每一行包含所有字段,即 我对jq有点不熟悉,但从这个开始,它没有捕获内部嵌套数组 jq-r'([0]|键未排序)作为$keys |$keys,映射([[.$keys[]])[]' [ { "name":"PM2.5", "unit":"ug/m3", "values":[ {

如何使用jq将这个json数组展平并写入csv文件,使每一行包含所有字段,即

我对jq有点不熟悉,但从这个开始,它没有捕获内部嵌套数组

jq-r'([0]|键未排序)作为$keys |$keys,映射([[.$keys[]])[]'

[
   {
      "name":"PM2.5",
      "unit":"ug/m3",
      "values":[
         {
            "timestamp":"2020-11-16T13:10:21.135Z",
            "value":3.696
         },
         {
            "timestamp":"2020-11-16T13:10:31.649Z",
            "value":3.696
         },
         {
            "timestamp":"2020-11-16T13:10:42.35Z",
            "value":3.696
         },
         {
            "timestamp":"2020-11-16T13:10:52.953Z",
            "value":3.696
         }
      ]
   },
   {
      "name":"PM10",
      "unit":"ug/m3",
      "values":[
         {
            "timestamp":"2020-11-16T13:10:21.135Z",
            "value":7.596
         },
         {
            "timestamp":"2020-11-16T13:10:31.649Z",
            "value":7.596
         },
         {
            "timestamp":"2020-11-16T13:10:42.35Z",
            "value":7.596
         },
         {
            "timestamp":"2020-11-16T13:10:52.953Z",
            "value":7.596
         }
      ]
   }
]
按如下方式发送到csv:

"name", "unit", "timestamp", "value"
"PM2.5", "ug/m3", "2020-11-16T13:10:21.135Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:31.649Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:42.35Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:52.953Z", 3.696  
"PM10", "ug/m3", "2020-11-16T13:10:21.135Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:31.649Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:42.35Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:52.953Z", 7.596
$jq-r'
[[“名称”、“单位”、“时间戳”、“值”]],
[ .[] 
|[.名称,.单位]+
(.values[]|[.timestamp,.value])]
| .[] 
|@csv'input.json
“名称”、“单位”、“时间戳”、“值”
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:21.135Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:31.649Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:42.35Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:52.953Z”,3.696
“PM10”,“微克/立方米”,“2020-11-16T13:10:21.135Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:31.649Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:42.35Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:52.953Z”,7.596

构建一个数组数组,每行一个,包括一个标题行,然后将它们全部格式化为CSV记录。

@Shawn yes抱歉试图添加,但由于堆栈溢出而被标记为
,我添加了一个示例now@Shawn是的,你是对的,下面是一个最简单的例子。由于没有我想要的输出格式,我改进了这个问题。这个问题可以简化(并且更有效),因为不需要最后的。[],如下:
'[“名称”,“单位”,“时间戳”,“值”],([]|[.name,.unit]+(.value[]|[.timestamp,.value])@csv'