使用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
相关产品推荐
相关产品推荐

