- 此问题在此处已有答案**:
How can I put integer as an argument in jq?(1个答案)
Numeric argument passed with jq --arg not matching data with ==(2个答案)
2天前关闭。
我在services.json中有如下JSON数据
{
"checkout-serviceA":{"prId":6644,"Sourcebranch":"","HFX":false,"IS_CR":"Yes"},
"checkout-serviceB":{"prId":15826,"Sourcebranch":"","HFX":false,"IS_CR": "no"},
"checkout-toggle":{"prId":8963,"Sourcebranch":"","HFX":true,"IS_CR": "Yes"},
"checkout-res":{"prId":1104,"Sourcebranch":"","HFX":false,"IS_CR": "Yes"}
}
我有一个变量,例如$PRID
,它已经包含prID
值。
我想把它传递给jq,然后为相应的prID
获取IS_CR
值的输出。
我试过jq --arg v "$PRID" '.[] | select(.prId == $v).IS_CR' services.json
&jq --arg v "$PRID" 'to_entries | map(select(.value.prId == $v))[0].value.IS_CR' services.json
但是没有一个工作,因为它给出null或nothing返回。
请帮忙
2条答案
按热度按时间dluptydi1#
--arg
创建一个字符串变量,但prId
属性是数字(6644 != "6644"
)。请改用
--argjson
:bjp0bcyl2#
使用:
jq '.[] | select(.prId == '"$PRID"') | .IS_CR' services.json
输出: