Ansible 需要将json映射到列表
我使用下面的json作为值注册变量,需要从这个json列表中提取名称和dn。在没有任何运气的情况下尝试了不同的选项Ansible 需要将json映射到列表,ansible,yaml,Ansible,Yaml,我使用下面的json作为值注册变量,需要从这个json列表中提取名称和dn。在没有任何运气的情况下尝试了不同的选项 { "nodes": { "status": -1, "imdata": [ { "fabricNode": { "attributes": { "status": "",
{
"nodes": {
"status": -1,
"imdata": [
{
"fabricNode": {
"attributes": {
"status": "",
"dn": "topology/pod-1/node-1",
"name": "NOQCJALAB1"
}
}
},
{
"fabricNode": {
"attributes": {
"status": "",
"dn": "topology/pod-1/node-1",
"name": "NOQCJALAB2"
}
}
}
],
"totalCount": 2,
"changed": false,
"failed": false
},
"changed": false,
"_ansible_verbose_always": true,
"_ansible_no_log": false
}
您需要删除对
map('from_json')
的无关调用,因为该对象已经是dict
- set_fact:
node_names: >-
{{ (nodes.stdout | from_json).data
| map(attribute='fabnode')
| map(attribute='attributes')
| map(attribute='dn')
| list
}}
如果您的数据结构中包含嵌入式json,则只需要调用这些map('from_json')
,如下所示:
- set_fact:
inner_value: >-
{{ (example_text | from_json).a_key
| map("from_json")
| map(attribute="inner_key")
| list
}}
vars:
example_text: |
{"a_key": ["{\"inner_key\": \"inner value\"}"]}
这是可以使用的。例如,下面的任务
- set_fact:
my_list: "{{ nodes.imdata|
json_query('[].{dn: fabricNode.attributes.dn,
name: fabricNode.attributes.name}')
}}"
- debug:
var: my_list
给予
请为我介绍一下上面的JSON好吗?在数组中,我有另一个JSON,这是我困惑的地方,因为我对ansiblesimple还比较陌生!多谢。我们可以用一个简单的json代替json数组吗?对不起,我是新来的。我将发布适当的继续,因为我现在无法详细编辑。Json数组看起来不错。谢谢,您好,如果您在imdata中还有一个阵列,请指导我好吗?数组中的数组
"my_list": [
{
"dn": "topology/pod-1/node-1",
"name": "NOQCJALAB1"
},
{
"dn": "topology/pod-1/node-1",
"name": "NOQCJALAB2"
}
]