Ansible:删除 json 文件中的空格

Ansible: Remove whitespaces in json file

我的 ansible 变量中加载了一个 json 文件内容。

json 内容(以及我从中写入的结果文件)有不必要的文件空间和空行。我想通过删除所有不必要的内容来缩小 json 文件。

是否可以做类似 {{ myjson_content| to_json_minify }} 的事情?

也许这可以通过正则表达式来完成?

您可以从 json 读取它并使用 separators 选项转换回 json。

{{ my_json_content | from_json | to_json(separators=(',',':')) }}

注意:这个没有文档,但是如果你看source code you will see that the filter accepts arbitrary keywords args which are later passed to the python json.dumps function。因此,您基本上可以将 json.dumps.

接受的任何参数传递给 to_json

playbook.yml

---
- hosts: localhost
  vars:
      my_json_content:
        '
          { "a" :   0,

          "b":   1,

            "c":    2}

        '
  tasks:
    - debug:
        msg: "json = {{ my_json_content }}"
    - debug:
        msg: "minified_json = {{ my_json_content | from_json | to_json(separators=(',',':')) }}"

$ ansible-playbook playbook.yml

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": "json =  { \"a\" :   0,\n\"b\":   1,\n\"c\":    2}\n"
}

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": "minified_json = {\"a\":0,\"c\":2,\"b\":1}"
}