Создавать записи из вложенной структуры и конвертировать в CSV - PullRequest
0 голосов
/ 19 июня 2020

У меня есть следующие 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

Мои выходные данные генерируют продукт name и DATA, что мне не нужно.

1 Ответ

2 голосов
/ 19 июня 2020
.[][] | [.name] + (.DATA[] | [.V,.Q,.T]) | @csv

демо на jqplay.org

Если ключи в элементах DATA всегда находятся в одном порядке, вы можете использовать следующий вместо этого.

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

Чтобы получить корректный вывод CSV, вам нужно вызвать JQ с параметром -r / - raw-output.

...