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

如何用Ansible的json_query提取JSON文档中的指定值?

Ansible中用JMESPath提取JSON字符串里的UUID值解决方案

问题核心:你通过shell模块获取的stdout是JSON格式的字符串,而非已解析的JSON对象,直接用[].stdout[].value查询自然返回null,必须先将字符串转为JSON对象再提取字段。

具体解决步骤:

  • 第一步:确保shell任务的结果已注册,比如register: uuid_result
  • 第二步:使用Ansible的from_json过滤器将stdout字符串解析为JSON对象
  • 第三步:用json_query或直接通过点符号访问目标字段value

示例代码:

- name: 执行shell命令获取JSON输出
  shell: "生成含UUID的JSON输出的命令"
  register: uuid_result

- name: 提取UUID值(方式1:json_query)
  debug:
    msg: "{{ uuid_result.stdout | from_json | json_query('value') }}"

- name: 提取UUID值(方式2:直接点访问,更简洁)
  debug:
    msg: "{{ (uuid_result.stdout | from_json).value }}"

如果你的stdout_lines是多行输出,仅某一行是目标JSON,只需先定位对应行再解析:

msg: "{{ uuid_result.stdout_lines[0] | from_json | json_query('value') }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:20