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

Ansible中json_query未返回预期结果的问题排查

问题修复方案

1. 修正JSON数据结构

你的原始JSON存在语法错误:data字段是对象({}),但内部直接放置数组([]),不符合JSON规范(对象必须是键值对集合)。正确的结构应该将data直接设为数组:

{ 
  "data": [ 
    { 
      "name": "myname", 
      "id": 1 
    }, 
    { 
      "name": "myname2", 
      "id": 2 
    }, 
    { 
      "name": "myname3", 
      "id": 3 
    } 
  ] 
}

2. 修正Ansible任务代码

你的任务存在3个问题:任务名称缺失、表达式未闭合、多余的to_json过滤器。修复后的代码如下:

- name: 查询name为myname3的元素
  debug:
    msg: "{{ test_json | json_query('data[?name==`myname3`]') }}"

关键说明:

  • 移除to_json过滤器:json_query模块直接作用于Ansible已加载的Python数据结构(字典/列表),无需先转为JSON字符串。
  • 字符串转义:使用反引号()包裹查询值,避免Jinja2模板的单引号嵌套冲突;也可以用双引号包裹整个json_query表达式,内部用单引号:json_query("data[?name=='myname3']")`。
  • 语法补全:补全任务名称和表达式末尾的闭合括号}}。

效果验证

修复后执行任务,debug模块会输出:

ok: [localhost] => {
    "msg": [
        {
            "id": 3,
            "name": "myname3"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:02:35