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

如何使用变量结合jq替换JSON文件中id字段的值?

解决JSON文件id字段替换问题

错误原因分析

你之前的命令存在三个关键问题:

  • 变量大小写不匹配:shell变量区分大小写,你定义的是App_id,但命令里误用了$app_id
  • 参数类型错误:--argjson用于传递JSON格式的变量(如数值、布尔值或JSON结构),而你的App_id是字符串类型,应使用--arg
  • jq变量引用不对应:命令里通过--argjson id $app_id定义了$id变量,但脚本里却引用了未定义的$app_id

正确命令示例

1. 基础替换(输出到控制台)

如果你的JSON是数组结构(例如[{"id": "...", ...}, ...]),执行:

jq --arg new_id "$App_id" 'map(.id = $new_id)' oauth2-permissions.json

如果你的JSON是单个对象(例如{"id": "...", ...}),去掉map即可:

jq --arg new_id "$App_id" '.id = $new_id' oauth2-permissions.json

2. 直接修改原文件(需jq 1.6及以上版本)

使用--in-place参数直接覆盖原文件(建议操作前先备份文件):

# 数组结构场景
jq --arg new_id "$App_id" --in-place 'map(.id = $new_id)' oauth2-permissions.json

# 单个对象场景
jq --arg new_id "$App_id" --in-place '.id = $new_id' oauth2-permissions.json

3. 兼容低版本jq的文件修改方式

如果你的jq版本低于1.6,可通过临时文件中转实现修改:

# 以数组结构为例
jq --arg new_id "$App_id" 'map(.id = $new_id)' oauth2-permissions.json > temp.json && mv temp.json oauth2-permissions.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:12:49