从嵌套结构中生成记录并转换为 CSV

Generate records out of nested structure and convert to CSV

我有以下 JSON 要转换为 CSV。它是一个数组的数组,其中包含一个对象和一个对象数组。

[
  [
    {
      "name": "A",
      "DATA": [
        {
          "V": 192.1,
          "Q": 0,
          "T": "2020-06-12T16:52:10.000Z"
        },
        {
          "V": 175.2,
          "Q": 0,
          "T": "2020-06-12T16:53:50.000Z"
        }
      ]
    },
    {
      "name": "B",
      "DATA": [
        {
          "V": 176,
          "Q": 0,
          "T": "2020-06-12T16:53:25.000Z"
        },
        {
          "V": 122.8,
          "Q": 0,
          "T": "2020-06-12T16:53:30.000Z"
        },
        {
          "V": 122.01,
          "Q": 0,
          "T": "2020-06-12T16:55:35.000Z"
        }
      ]
    }
  ]
]

想要的是:

A,192.1,0,2020-06-12T16:52:10.000Z
A,175.2,0,2020-06-12T16:53:50.000Z
B,176,0,2020-06-12T16:53:25.000Z
B,122.8,0,2020-06-12T16:53:30.000Z
B,122.01,0,2020-06-12T16:55:35.000Z

我的输出生成了 nameDATA 的乘积,这不是我需要的。

.[][] | [.name] + (.DATA[] | [.V,.Q,.T]) | @csv

demo at jqplay.org

如果 DATA 的元素中的键总是以相同的顺序排列,您可以使用以下代替。

.[][] | [.name] + (.DATA[] | map(.)) | @csv

要获得有效的 CSV 输出,您需要使用 -r/--raw-output 选项调用 JQ。