使用JQ将数组嵌套到新对象中

时间:2018-09-05 17:00:43

标签: json bash shell jq

我知道这应该很容易,但是它让我感到困惑。我正在寻找以下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 :(得分:0)

做到这一点

jq '{ packages : . }' input.json

答案 1 :(得分:0)

jq中,甚至您认为是文字的东西实际上都是过滤器。在这种情况下,您需要的过滤器就是{packages: .}

$ echo '[{}, {}]' | jq '{packages: .}'
{
  "packages": [
    {},
    {}
  ]
}