Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ansible: Remove whitespaces in json file

I have a json file content loaded in my ansible variables.

The json content (and the resulting file I write from it) has unnecessary file spaces and blank lines. I want to minify the json file by removing all that unnecessary stuff.

Is it possible to do something like {{ myjson_content| to_json_minify }} ?

Maybe this can be done through a regex ?

like image 557
Karl Avatar asked Oct 20 '25 11:10

Karl


1 Answers

You can read it from json and convert back into json with separators option.

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

Note: this is not documented, but if you look at the source code you will see that the filter accepts arbitrary keywords args which are later passed to the python json.dumps function. So you can basically pass to to_json any parameter accepted by 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=(',',':')) }}"

$ 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}"
}
like image 85
r-m-n Avatar answered Oct 23 '25 02:10

r-m-n



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!