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

jq解析AccuWeather嵌套JSON无法返回索引数组求助

解决jq返回数组格式的问题

核心问题是你当前的jq查询用了.[].xxx这种写法,会把数组中的每个元素单独输出,而不是包裹成数组。要返回标准数组格式,只需要把提取逻辑放在数组构造器[]里面,或者用map()方法。

示例1:获取RainProbability数组

原问题查询

drp=$(cat "$HOME/directory/file" | jq '.DailyForecasts[].Day.RainProbability | .')

修复后查询

直接用数组构造器包裹提取逻辑:

drp=$(cat "$HOME/directory/file" | jq '[.DailyForecasts[].Day.RainProbability]')

或用map()方法(适合后续需要对元素做额外处理的场景):

drp=$(cat "$HOME/directory/file" | jq '.DailyForecasts | map(.Day.RainProbability)')

修复后返回结果为标准数组格式,例如 [1,2,3,4,5]。

示例2:获取AirAndPollen中Grass的Value数组

原问题查询

apg=$(cat "$HOME/directory/file" | jq '.DailyForecasts[].AirAndPollen | .[1] | .Value | .')

修复后查询

用数组构造器包裹:

apg=$(cat "$HOME/directory/file" | jq '[.DailyForecasts[].AirAndPollen[1].Value]')

或用map():

apg=$(cat "$HOME/directory/file" | jq '.DailyForecasts | map(.AirAndPollen[1].Value)')

关键逻辑说明

  • .[].xxx 是遍历数组并逐个输出元素,因此结果是空格分隔的单个值;
  • [.[].xxx] 是将遍历出的所有元素包裹为一个新数组,直接返回完整数组结构;
  • map() 是对输入数组的每个元素执行指定操作,最终返回处理后的数组,逻辑更直观,适合复杂的元素处理场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:34:51