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

如何用jq基于双条件精准替换JSON中指定插件的字段值?

解决方法

你的问题出在使用 .plugins[] 时会遍历所有插件,导致筛选和修改操作都错误作用到了所有插件上。要实现精准的双条件筛选替换,需要分层定位目标对象:先找到指定服务,再在该服务的插件列表中定位到目标插件进行修改。

正确的jq命令如下:

cat file.json | jq '.services |= map(
    if .name == "check-api" then
        .plugins |= map(
            if .name == "oauth2" then
                .config.provision_key = "xxxxxx"
            else
                .
            end
        )
    else
        .
    end
)'

命令说明:

  1. 外层通过 map 遍历 services 数组,用 if .name == "check-api" 精准定位到目标服务
  2. 对目标服务的 plugins 数组再次执行 map 遍历,用 if .name == "oauth2" 定位到要修改的插件
  3. 仅修改该插件的 .config.provision_key 字段,其余插件和服务保持原结构不变

这样就能完成精准替换,不会误修改其他插件的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:29:55