Ansible 需要将json映射到列表

Ansible 需要将json映射到列表,ansible,yaml,Ansible,Yaml,我使用下面的json作为值注册变量,需要从这个json列表中提取名称和dn。在没有任何运气的情况下尝试了不同的选项 { "nodes": { "status": -1, "imdata": [ { "fabricNode": { "attributes": { "status": "",

我使用下面的json作为值注册变量,需要从这个json列表中提取名称和dn。在没有任何运气的情况下尝试了不同的选项

{
    "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"
    }
]