Ansible:删除 json 文件中的空格

Kar*_*arl 4 json jinja2 ansible

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

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

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

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

r-m*_*m-n 6

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

{{ my_json_content | from_json | to_json(separators=(',',':')) }}
Run Code Online (Sandbox Code Playgroud)

注意:这没有记录,但是如果您查看源代码,您会发现过滤器接受任意关键字 args,这些关键字稍后会传递给 pythonjson.dumps函数。所以你基本上可以传递给to_json接受的任何参数json.dumps

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=(',',':')) }}"
Run Code Online (Sandbox Code Playgroud)

$ 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}"
}
Run Code Online (Sandbox Code Playgroud)