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

Ansible playbook使用json_query按id查询JSON值返回空数组如何解决

问题原因

  • 语法错误:你编写的查询语句末尾多了一个多余的右括号),属于基础语法问题。
  • 结构匹配问题:operations[?resourceType=='/certificates/ca']返回的是一个数组,数组内每个元素的items本身又是独立数组,直接在.items后加过滤条件无法匹配到嵌套层级内的id字段,需要先将items的嵌套数组展开为一维数组再做过滤。
  • 额外不规范写法:你读取文件的lookup逻辑中,在jinja2表达式内部又嵌套了{{ }}包裹变量,不符合语法规范,容易引发解析异常。

解决方案

调整查询语句,先展开items嵌套数组再做过滤,同时修正变量写法即可,修改后的任务示例如下:

- name: Get Source JSON Data
  set_fact:
    jsonExp: "{{ lookup('file', '/tmp/' ~ src_file_name) | from_json }}"

- name: Get Cert Info
  set_fact:
    cert_data: "{{ jsonExp | json_query(jquery) }}"
  vars:
    # 末尾加 | [0] 可直接返回单个对象而非数组,按需选择
    jquery: "operations[?resourceType=='/certificates/ca'].items[] | [?id=='trustedCerts_cert2']"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:24:03