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

使用JQ修改JSON:指定address的origin设weight为0并精简输出

正确JQ命令实现需求

最终命令

{name, origins: .origins | map(if .address == "1.1.1.1" then .weight = 0 else . end)}

命令说明

  1. 构造目标输出结构:直接声明只保留顶层的name字段,以及处理后的origins字段,过滤掉其他无关顶层字段。
  2. 处理origins数组:
    • 用map遍历origins数组的每个元素
    • 对每个元素判断:如果address等于"1.1.1.1",就将其weight设为0;否则保持原元素不变。

原命令问题分析

你之前的命令(.[].origins[] | select(.address == "1.1.1.1") | .weight ) |= 0有两个问题:

  • 没有做顶层字段筛选,输出会包含原JSON的所有顶层字段,不符合“仅保留name和origins”的要求
  • 如果你的顶层JSON是单个对象而非数组,.[].origins[]的写法会出错,应该直接用.origins定位数组

示例验证

输入JSON

{
  "name": "test-group",
  "origins": [
    {"address": "1.1.1.1", "weight": 10},
    {"address": "2.2.2.2", "weight": 20},
    {"address": "1.1.1.1", "weight": 15}
  ],
  "extra-field": "should-be-removed"
}

执行命令后输出

{
  "name": "test-group",
  "origins": [
    {"address": "1.1.1.1", "weight": 0},
    {"address": "2.2.2.2", "weight": 20},
    {"address": "1.1.1.1", "weight": 0}
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:55:18