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

使用jq替换JSON字段值报错:Cannot index string with string "fields"

问题分析与解决

错误原因

你写的jq命令通过管道|将JSON结构逐层展开,最终只针对fields数组里的单个字段对象进行操作,破坏了原JSON的层级结构,导致jq无法正确识别上下文里的fields字段;同时这种写法只会输出被修改的那个小对象,而非完整的修改后JSON结构。

正确写法

要保留原JSON结构并完成修改,有两种常用方式:

方式1:直接针对层级更新赋值

jq '.[].fields[] |= (select(.name == "body_t").value = "你的新值")' template.json

通过|=操作符,直接在原层级上对匹配字段进行修改,同时保留整个JSON结构。

方式2:用map遍历数组处理

jq 'map(.fields |= map(if .name == "body_t" then .value = "你的新值" else . end))' template.json

通过map分别遍历外层数组和fields数组,对匹配字段修改值,不匹配的保持原样,最终返回完整JSON结构。

示例验证

用你的模板JSON测试第一种命令(将新值设为NEW_CONTENT):

jq '.[].fields[] |= (select(.name == "body_t").value = "NEW_CONTENT")' template.json

会输出修改后的完整JSON:

[
  {
    "fields": [
      {
        "name": "body_t",
        "value": "NEW_CONTENT"
      }
    ],
    "id": "abc123"
  }
]

内容的提问来源于stack exchange,提问作者Terry Chambers - Onix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:27:19