Вложить массив в новый объект с JQ - PullRequest
0 голосов
/ 05 сентября 2018

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

    [{
        "Name": "Test1",
        "Version": "5.0.1",
        "source": "source"
    },
    {
        "Name": "Test2",
        "Version": "2.0.11",
        "source": "source"
    },
    {
        "Name": "Test3",
        "Version": "2.1.2",
        "source": "source"
    }]

и преобразовать его в:

 {
    "packages": [
        {
            "Name": "Test1",
            "Version": "5.0.1",
            "source": "source"
        },
        {
            "Name": "Test2",
            "Version": "2.0.11",
            "source": "source"
        },
        {
            "Name": "Test3",
            "Version": "2.1.2",
            "source": "source"
        }
    ]
  }

Я пробовал множество разных способов, самое близкое, что я получил, это что-то похожее на: jq '.packages += [input]'

По сути, это просто перемещение исходного JSON во вложенное состояние. Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Даже вещи, которые вы считаете литералами, действительно являются фильтрами в jq. Фильтр, который вам нужен в этом случае, просто {packages: .}:

$ echo '[{}, {}]' | jq '{packages: .}'
{
  "packages": [
    {},
    {}
  ]
}
0 голосов
/ 05 сентября 2018

просто сделай это

jq '{ packages : . }' input.json
...