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

使用jq命令修改JSON文件值时报Cannot index string with string "Tags"错误求解

报错原因

  1. 错误使用了map()函数:map()是专门用于遍历数组的函数,但你的JSON根节点是单个对象而非数组。对根对象调用map()时,jq会提取对象的所有值组成数组进行遍历,其中部分值为字符串类型(比如DBSnapshotIdentifier字段的值就是字符串),遍历到这些字符串时尝试读取.Tags属性,就会触发Cannot index string with string "Tags"的报错。
  2. 硬编码了Tags[11]索引:从你提供的JSON来看,Tags数组总共只有4个元素,最大索引为3,Period对应的索引是3,硬编码索引不仅会出现越界问题,后续如果Tags数组的元素顺序发生变动,逻辑会直接失效。

正确命令

仅输出修改后的内容,不修改原文件

jq '(.Tags[] | select(.Key == "Period") .Value) |= "Weekly"' create_snapshot.json

直接修改原文件(jq 1.5及以上版本支持)

jq -i '(.Tags[] | select(.Key == "Period") .Value) |= "Weekly"' create_snapshot.json

命令逻辑说明

  • .Tags[]遍历Tags数组的所有元素
  • select(.Key == "Period")筛选出Key为Period的元素
  • |= "Weekly"是更新赋值操作,将筛选出的元素的Value字段修改为Weekly,不会改动JSON的其他结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:39:04