jq transform - дочерний массив json для строки с разделителями - PullRequest
0 голосов
/ 21 ноября 2018

Я хочу преобразовать следующий вход с помощью jq

{
    "count": 1000,
    "rows": [{
            "id": 1,
            "child_id": 11,
            "childarray": ["value1", "value2"]
        },
        {
            "id": 2,
            "child_id": 12,
            "childarray": ["value3", "value4"]
        }
    ]
}

Вывод должен быть:

[
  {
    "id": 1,
    "child_id": 11,
    "childarray": "value1, value2"
  },
  {
    "id": 2,
    "child_id": 12,
    "childarray": "value3, value4"
  }
]

Я использую этот фильтр jq-> "[.rows[]]", но незнать, как "присоединить" массив -> "childarray": ["value1", "value2"] к строке с запятой -> "value1, value2"

https://jqplay.org/s/5TlSDgJnkc

1 Ответ

0 голосов
/ 21 ноября 2018

map + join подход:

jq '.rows | map(.childarray |= join(", "))' input.json

Выход:

[
  {
    "id": 1,
    "child_id": 11,
    "childarray": "value1, value2"
  },
  {
    "id": 2,
    "child_id": 12,
    "childarray": "value3, value4"
  }
]

Другая альтернатива:

jq '.rows[].childarray |= join(", ") | .rows'
...