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

使用jq转换JSON数组时出现Cannot index number报错如何解决

错误原因

你遇到的报错是jq运算符优先级导致的:

  • jq中管道符 | 的优先级高于赋值运算符 =,你写的原始命令会被解析为 (.fields_selected = .fields_selected) | map(...)
  • 这等于先对fields_selected做了无意义的赋值,紧接着把整个JSON对象(是对象结构,不是数组)传给map函数处理
  • map遍历对象时会逐个处理对象的属性值,当遍历到数值类型的default_interval(值为90000)时,尝试取.measurement属性就触发了「无法用字符串"measurement"索引数字」的报错。

修正后的jq命令

只需要给赋值右侧的逻辑加括号,明确管道的作用范围即可:

jq '.fields_selected = (.fields_selected | map({name: .measurement, aggregation: {step: .step, function: .aggregation}}))' config-it-client.json

执行后会保留db_credentials、default_interval等原有字段,同时按要求重构fields_selected数组内的结构,完全匹配你需要的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:04