如何防止Ansible重新订购JSON?

时间:2017-09-06 11:15:23

标签: json ansible

鉴于以下playbook从一些随机webservice中获取一些数据:

 {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  }

Ansible正在重新排序json输出:

输出(数组的第一个元素,重新排序):

{{1}}

原始数据是:

{{1}}

如何获得一个不重新排序的漂亮的格式化JSON? (我见过this question,如果可能的话,它仍然会很好)

1 个答案:

答案 0 :(得分:2)

Ansible不会更改result.content的值并匹配API响应。

您可以使用以下方法轻松测试:

- copy:
    content: "{{ result.content | string }}"
    dest: /tmp/raw.json

但是当您使用{{ result.content }}显示该值时,会触发Ansible类型检测机制,该机制将JSON字符串转换为对象(无序),然后打印对象的值(非原始值)。

要防止类型检测,您可以使用| string过滤器。

另请参阅this answer了解更多详情。