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

如何用jq在Bash脚本中提取嵌套JSON的Wind/Direction值?

解决jq提取Wind/Direction数值时的「cannot index array with string」错误

问题场景

需要从嵌套数组对象结构的JSON中提取Wind/Direction下的数值,执行以下命令时反复出现「cannot index array with string」错误:

cat accuweather_raw | jq ".Wind[].Direction[] | [.Localized]"

错误原因

这个错误的核心是:你用了数组遍历符号[]去索引一个非数组类型的字段。比如Wind或Direction实际上是单个对象,而非数组,强行加[]就会触发索引错误。

解决方案

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

情况1:Wind和Direction都是单个对象

如果你的JSON结构类似:

{
  "Wind": {
    "Direction": {
      "Localized": "North",
      "Degrees": 0
    }
  }
}

提取单个值:

cat accuweather_raw | jq ".Wind.Direction.Localized"

提取为数组格式:

cat accuweather_raw | jq "[.Wind.Direction.Localized]"

情况2:Wind是数组,Direction是单个对象

如果JSON结构类似:

[
  {
    "Wind": {
      "Direction": {
        "Localized": "North"
      }
    },
    {
      "Wind": {
        "Direction": {
          "Localized": "East"
        }
      }
    }
  ]

提取所有值:

cat accuweather_raw | jq ".Wind[].Direction.Localized"

提取为数组格式:

cat accuweather_raw | jq "[.Wind[].Direction.Localized]"

情况3:Wind是单个对象,Direction是数组

如果JSON结构类似:

{
  "Wind": {
    "Direction": [
      { "Localized": "North" },
      { "Localized": "Northeast" }
    ]
  }
}

提取所有值:

cat accuweather_raw | jq ".Wind.Direction[].Localized"

提取为数组格式:

cat accuweather_raw | jq "[.Wind.Direction[].Localized]"

容错写法(避免键不存在报错)

如果不确定字段是否存在,可以用?运算符跳过不存在的路径:

cat accuweather_raw | jq ".Wind?.Direction?.Localized"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:05:04