mapping json variable to list using set_fact

Hello All,

I have register variable with below json as value and need to extract name and dn from this JSON to list. tried different options using set_fact without any luck. Could you please someone help? this is really urgent

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

The json_query filter is probably what you’re looking for:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter

- set_fact:
    new_var: "{{ your_var | json_query('nodes.imdata[*].fabricNode.attributes.{dn:dn,name:name}') }}"

should give you:

[
  {
    "dn": "topology/pod-1/node-1",
    "name": "NOQCJALAB1"
  },
  {
    "dn": "topology/pod-1/node-1",
    "name": "NOQCJALAB2"
  }
]

Many thanks for the response:

I have one more array within imdata. COuld you please guide me how to extract fields? it is somewhat like

 new_var: "{{ your_var | json_query('nodes.imdata[*].result[*].fabricNode.attributes.{dn:dn,name:name}') }}"

also in could you please tell me mention that? just variable or upto array

I appreciate your help

thanks