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

使用jq在JSON数组中实现name字段字符串替换的方法求助

解决方案

不需要借助bash函数,直接用jq内置的gsub()全局替换函数就能实现需求,它可以直接在jq内部完成字符串替换操作,无需调用外部shell函数。

核心jq命令

根据你的JSON结构选择对应命令:

  • 如果你的JSON是直接的数组(如示例所示):
    jq '.[].name |= gsub("\\."; "-")'
    
  • 如果你的JSON是包含data字段的结构(如脚本中.data所示):
    jq '.data[].name |= gsub("\\."; "-")'
    

完整脚本示例

URL="你的目标地址"
RAW=$(curl "${URL}")
# 直接用jq处理JSON,替换name字段中的句号为连字符
echo "${RAW}" | jq '.data[].name |= gsub("\\."; "-")'

命令说明

  • .[].name:遍历数组中的每个对象,定位到name字段
  • |=:更新字段值,将替换后的结果赋值回原字段
  • gsub("\\."; "-"):全局替换字符串中的.(注意正则中.是特殊字符,需要用\\转义)为-

验证示例

将你的示例JSON输入命令:

echo '[
    {"id":"1","name":"a.a"},
    {"id":"2","name":"b.b"},
    {"id":"3","name":"c.c"}
]' | jq '.[].name |= gsub("\\."; "-")'

会输出期望结果:

[
  {
    "id": "1",
    "name": "a-a"
  },
  {
    "id": "2",
    "name": "b-b"
  },
  {
    "id": "3",
    "name": "c-c"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:36:15