mapping json variable to list using set_fact

24 views
Skip to first unread message

Balasubramaniam M

unread,
Oct 11, 2019, 3:09:09 AM10/11/19
to Ansible Development
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
}

Chris Church

unread,
Oct 11, 2019, 10:05:17 AM10/11/19
to Balasubramaniam M, Ansible Development
The json_query filter is probably what you're looking for:
- 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"
  }
]

--
You received this message because you are subscribed to the Google Groups "Ansible Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-deve...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-devel/72ef3632-4fd3-4f9b-9a1f-6901202cca33%40googlegroups.com.


--
--
Chris Church
flyin...@gmail.com

Balasubramaniam M

unread,
Oct 11, 2019, 11:13:55 AM10/11/19
to Ansible Development
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
To unsubscribe from this group and stop receiving emails from it, send an email to ansibl...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages