下面是JSON:
{
"id": "jboss_data1",
"DS1": {
"policy_name": "CAT_LOCATION",
"username": "PRODUCTION_1",
"password_clear": "7bla1234",
},
"DS3": {
"policy_name": "CAT_SRC",
"username": "PRODUCTION_2",
"password_clear": "foo7864",
},
"DS4": {
"policy_name": "CAT_FOLDER",
"username": "PRODUCTION_3",
"password_clear": "123bar456",
}
}
在bash中,当username
匹配我的变量时,我试图提取password_clear
值。
我试过类似于
jq -r --arg user "${user_picked}" '.[]|select(.value.username=="$user").password_clear' file.json
(我也尝试了很多不同的其他组合,但没有成功…)
您能告诉我这个请求的正确语法吗?
问候
1条答案
按热度按时间vdgimpew1#
因为不是所有的对象都有
username
字段,所以你需要使用Optional Object Identifier-Index(?
)作为.username?
来捕获那些丢失的对象:输出:
关于您的尝试,您使用了
.value
,但这并不需要,因为.[]
可以很好地循环对象。.value
可以来自to_entries
,将对象转换为键/值对,但同样,使用.[]
要容易得多。