我是jq
的新手,并尝试将images
键的值提取到新键中,这样
{
"environments": {
"staging": {
"apps": {
"web": {
"image": "image1"
}
}
},
"production": {
"apps": {
"web": {
"image": "image2"
},
"admin": {
"image": "image3"
}
}
}
}
}
变成这样的东西:
{
"environments": {
"staging": {
"images": [
"image1"
]
}
},
"production": {
"images": [
"image2",
"image3"
]
}
}
我已经摆弄jq
已有一段时间了,有人能给我一个提示吗?
答案 0 :(得分:1)
假设结果期望environments
对象同时包含staging
和production
,则可以使用以下jq
命令:
<file jq '.environments |= (.[] |= {images : (.apps|map(.[]))})'
{
"environments": {
"staging": {
"images": [
"image1"
]
},
"production": {
"images": [
"image2",
"image3"
]
}
}
}
这将environments
对象的内容替换为新的内部images
对象,该对象包含apps
和image
引用的列表图像。
图像数组是使用内置的map()
函数构建的。