如何基于输入的键值对创建新的JSON文件?
输入键/值对可以是任意数量。
用户输入:
filename: myfile
json:
key1: value1
key2: value2
答案 0 :(得分:2)
Ansible中有一个to_json
Jinja过滤器可以帮您做到这一点。
在您的copy
任务的document.getElementById('header').className =
属性中使用它,您应该具有所需的输出。
给出剧本
content
回顾一下
- hosts: localhost
gather_facts: no
vars:
filename: myfile
json:
key1: value1
key2: value2
tasks:
- copy:
content: "{{ json | to_json }}"
dest: "{{ filename }}.json"
并生成文件 myfile.json ,其中包含
PLAY [localhost] ***************************************************************
TASK [copy] ********************************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
答案 1 :(得分:0)
任务
- copy:
content: "{{ {item: lookup('vars', item)}|to_nice_json }}"
dest: "{{ filename }}.json"
loop:
- json
给予
shell> cat myfile.json
{
"json": {
"key1": "value1",
"key2": "value2"
}
}
可以循环更多变量。例如,
vars:
filename: myfile
json1:
key1: value1
key2: value2
json2:
key3: value3
key4: value4
tasks:
- copy:
content: |
{% for item in my_vars %}
{{ {item: lookup('vars', item)}|to_nice_json }}
{% endfor %}
dest: "{{ filename }}.json"
vars:
my_vars:
- json1
- json2
给予
shell> cat myfile.json
{
"json1": {
"key1": "value1",
"key2": "value2"
}
}
{
"json2": {
"key3": "value3",
"key4": "value4"
}
}