Как мне преобразовать эти данные JSON, используя JQ, чтобы по очереди извлекать каждый вложенный элемент массива на верхний уровень? - PullRequest
0 голосов
/ 13 ноября 2018

С учетом ввода формы

[
    {"a": 1, "b": [{"c": 1}, {"c": 2}]}, 
    {"a": 2, "b": [{"c": 4}, {"c": 5}]}
]

Я пытаюсь преобразовать, чтобы выглядеть так:

[
    {"a": 1, "b": [{"c": 1}],
    {"a": 1, "b": [{"c": 2}],
    {"a": 2, "b": [{"c": 3}],
    {"a": 2, "b": [{"c": 4}]
]

У меня есть [map(.b) ] | flatten, однако любая дальнейшая операция с использованием родительского контекста не представляется возможной. Я действительно застрял и был бы признателен за любую помощь.

Спасибо

Ответы [ 2 ]

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

Вот простое решение, в котором не упоминаются никакие клавиши, кроме «b»:

map(. + (.b[] | {b: [.]}))
0 голосов
/ 13 ноября 2018

Вы можете попробовать этот фильтр:

jq 'map({a,"b":.b[]|[.]})' file

Обновляет содержимое b с каждым значением c отдельно.

...