You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过jq根据变量中的prId值获取对应IS_CR字段值

问题原因与解决方法

你的命令返回null的核心原因是:--arg传入的$v是字符串类型,但JSON中的prId是数值类型,类型不匹配导致比较失败。

修正方案1:将字符串变量转为数值

把传入的$v通过tonumber转为数值后再比较,修正后的两条命令如下:

第一条命令修正版

jq --arg v "$PRID" '.[] | select(.prId == ($v | tonumber)).IS_CR' services.json

第二条命令修正版

jq --arg v "$PRID" 'to_entries | map(select(.value.prId == ($v | tonumber)))[0].value.IS_CR' services.json

修正方案2:直接传入数值类型变量

如果你的$PRID本身就是纯数字,可以用--argjson替代--arg,它会直接将变量解析为JSON数值类型:

jq --argjson v "$PRID" '.[] | select(.prId == $v).IS_CR' services.json

验证技巧

可以先查看传入变量的类型,确认问题:

jq --arg v "$PRID" '$v | type' services.json

执行后会返回"string",而JSON中prId的类型是"number",这就是比较失败的关键。

内容的提问来源于stack exchange,提问作者Venu Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:55:42