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

如何在Ansible中通过变量提取含短横线的JSON键值?

解决Ansible用变量提取含短横线的JSON键值问题

针对你遇到的问题,有两种简单可靠的解决办法:

方法一:直接用Ansible字典的方括号访问(推荐)

Ansible的字典对象本身支持通过方括号+变量的方式访问键,不管键有没有特殊字符,完全不需要用json_query,写法更简洁:

- set_fact:
    lookup_key: profile-id
- set_fact:
    value: "{{ data[lookup_key] }}"

执行后value的值就是1234,直接满足需求。

方法二:构造正确的json_query查询字符串

如果你一定要用json_query,需要把变量lookup_key包装成带双引号的查询表达式,用Jinja2的字符串拼接符~来实现:

- set_fact:
    lookup_key: profile-id
- set_fact:
    value: "{{ data | json_query('\"' ~ lookup_key ~ '\"') }}"

这里通过'\"'拼接出双引号,让json_query收到的查询语句是"profile-id",和你手动写的格式一致,就能正确提取值。

你之前尝试失败的原因说明

  • json_query("lookup_key"):这里的lookup_key是字符串字面量,不是变量,所以会去查键名为lookup_key的值,自然找不到。
  • json_query(\"lookup_key\"):转义方式错误,最终传递给json_query的是包含双引号的键名"profile-id"(带引号本身),而你的JSON键是不带外层双引号的profile-id,所以匹配失败。
  • 正则替换的方法完全没必要,反而因为多余的转义导致json_query语法解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:12:35