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

使用json_query过滤含enabled:true的数组失败问题求助

解决Ansible json_query过滤布尔值数组的问题

问题1:空数组返回的原因

你第一个查询返回空数组,核心问题是布尔值匹配时错误使用了字符串引号。API返回的enabled字段是布尔类型(true/false,无引号),但你的JMESPath表达式用了[?enabled == 'true'],把布尔值当成字符串匹配,自然找不到符合条件的对象。

修正后的单个结果过滤写法

- name: API output (single result)
  debug:
    msg: "{{ api_result.results.0.json.policies | json_query(policies) }}"
  vars:
    policies: "[?enabled == true]"

问题2:模板错误的原因

你尝试的第二种写法*.policies["[?enabled == 'true']"]不符合JMESPath语法:

  • 遍历数组需要用[*]而非*
  • 过滤条件不需要嵌套在引号内,直接跟在数组路径后即可

处理所有loop结果的正确写法

如果要批量处理loop返回的所有API结果,过滤每个结果中的启用策略:

- name: API output (all results)
  debug:
    msg: "{{ api_result.results | json_query(policies_query) }}"
  vars:
    policies_query: "[*].json.policies[?enabled == true]"

验证数据结构的建议

如果不确定enabled字段的类型,可以先打印原始数据确认:

- name: Print raw policy data
  debug:
    var: api_result.results.0.json.policies

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:02:23