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

如何正确向Ansible URI模块传递数组参数?

解决Ansible URI模块传递数组格式错误问题

问题原因

你当前的Playbook里,body是手动拼接的JSON字符串,当把{{ letters }}插入时,Ansible会将数组变量转换成它的字符串表示形式(类似['aa', 'ab', ...]),再作为单个字符串值放到JSON数组里,最终导致发送的请求中letters变成包含单个字符串元素的数组,而非期望的原数组结构。

正确解决方案

利用body_format: json的特性,直接用YAML字典定义body,让Ansible自动完成JSON序列化,以此保留数组的原始类型:

修改后的Playbook片段:

- name: Create a letter job
  uri:
    url: 'http://localhost:8000/api/app'
    method: POST
    headers:
      Content-Type: application/json
    body:
      letters: "{{ letters }}"
    body_format: json
    return_content: yes
  register: response

如果偏好单行写法,也可以这样写:

body: { "letters": "{{ letters }}" }

效果说明

修改后,Ansible会自动将letters数组序列化为标准的JSON数组,发送到API的请求体中letters字段会变成["aa", "ab", "ac", "ad", "ae"],对应返回的响应结构也会和你期望的一致。

你之前尝试的replace过滤器无效,是因为它仅修改了变量的字符串表现形式,没有解决变量类型被强制转换的核心问题。直接用YAML字典配合body_format: json才是正确的处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:29:54