Here is the Ansible playbook yaml_to_json.yml
(in a real world example the names of the files would probably be parameterized).
--- - hosts: localhost tasks: - shell: cat my.yaml register: result - set_fact: myvar: "{{ result.stdout | from_yaml | to_json }}" - copy: content: "{{ myvar }}" dest: my.json
Here is an example of a yaml input file which contains some special characters, lists, strings, numbers etc.
--- xx: - a: - b: A: aadf7{fdfd"öög B: [ 'asdfadsf*5%@@@"masdf' , 123456 ] yy: n: C: 'AAdf7{fdfd"öög' D: [ 'ASdfadsf*5%@@@"masdf' , 789.56 ] m:
When run via ansible-playbook yaml_to_json.yml
the
JSON output file below (run via jq .
) is generated.
{ "yy": { "m": null, "n": { "C": "AAdf7{fdfd\"\\u00f6\\u00f6g", "D": [ "ASdfadsf*5%@@@\"masdf", 789.56 ] } }, "xx": [ { "a": null }, { "b": { "A": "aadf7{fdfd\"\\u00f6\\u00f6g", "B": [ "asdfadsf*5%@@@\"masdf", 123456 ] } } ] }Note how lists and dictionaries and special characters are put into the resp. JSON format.
Also note that I am using the Ansible copy
module.
A shell: echo "{{ myvar }}" > my.json
does not work since it does not take care of the correct quote and special characters subsitutions.