Json 如何使用jq将子值聚合到数组中?

Json 如何使用jq将子值聚合到数组中?,json,shell,jq,Json,Shell,Jq,我不熟悉jq,尝试将images键的值提取到一个新键中,以便 { “环境”:{ “登台”:{ “应用程序”:{ “网络”:{ “图像”:“图像1” } } }, “生产”:{ “应用程序”:{ “网络”:{ “图像”:“图像2” }, “管理员”:{ “图像”:“图像3” } } } } } 变成这样: { “环境”:{ “登台”:{ “图像”:[ “图像1” ] } }, “生产”:{ “图像”:[ “图像2”, “图像3” ] } } 我一直在玩弄jq有一段时间了,有人能给我一个提示吗?

我不熟悉
jq
,尝试将
images
键的值提取到一个新键中,以便

{
“环境”:{
“登台”:{
“应用程序”:{
“网络”:{
“图像”:“图像1”
}
}
},
“生产”:{
“应用程序”:{
“网络”:{
“图像”:“图像2”
},
“管理员”:{
“图像”:“图像3”
}
}
}
}
}
变成这样:

{
“环境”:{
“登台”:{
“图像”:[
“图像1”
]
}
},
“生产”:{
“图像”:[
“图像2”,
“图像3”
]
}
}

我一直在玩弄
jq
有一段时间了,有人能给我一个提示吗?

假设结果是
环境
对象同时包含
暂存
生产
,您可以使用以下
jq
命令:

<file jq '.environments |= (.[] |= {images : (.apps|map(.[]))})'
{
  "environments": {
    "staging": {
      "images": [
        "image1"
      ]
    },
    "production": {
      "images": [
        "image2",
        "image3"
      ]
    }
  }
}