# json parsing help

**URL:** <https://forum.ansible.com/t/json-parsing-help/33698>\
**Category:** Ansible Developer\
**Created:** [August 28, 2020, 8:41pm UTC](https://forum.ansible.com/t/json-parsing-help/33698 "2020-08-28T20:41:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kevin\_Hoyt](https://avatars.discourse-cdn.com/v4/letter/k/d78d45/32.png) [@Kevin\_Hoyt](https://forum.ansible.com/u/Kevin_Hoyt)\
**Post date:** [August 28, 2020, 8:41pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/1 "2020-08-28T20:41:09Z")

</div>

Hi everyone, I’m just learning ansible and having some trouble parsing out some json data. I’m hoping someone can help me. What I’m looking for is the Name field at hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService

I can get to this level, but can’t get past the array and then the @Name. When I do, I get errors like this:  
“msg”: “template error while templating string: expected name or number. String: {{ hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService[0]."@Name" }}”

I’ve tried a handful of combos to get this but nothing seems to work. Any help would be appreciated.

Here is the sample data, the data I’m after is in **bold** :

“hc\_pim\_info”: {  
“dpListProcessesReply”: {  
“@ReturnCode”: “0”,  
“@xmlnsdp”: “http//www.cisco.com/vtg/diagnosticportal”,  
“dpSchema”: {  
“@Version”: “1.0”  
},  
“dpServiceList”: {  
“dpService”: [  
{  
**“@Name”: “CTI Server 1A”,**  
“dpProcessList”: {  
“dpProcessProp”: [  
{  
“@Description”: “Node Manager”,  
“@Name”: “nodeman.exe”,  
“@UpTime”: “10.052531.5637483”  
},  
{  
“@Description”: “Node Manager Manager”,  
“@Name”: “nmm.exe”,  
“@UpTime”: “10.052528.7086193”  
},  
{  
“@Description”: “CTISrvr”,  
“@Name”: “ctisrvr.exe”,  
“@Status”: “test-CG1A ctisvr - [ACTIVE myserver SecurityMode - MIXED (NonSecurePort 42027, SecurePort 42030)]”,  
“@UpTime”: “10.052528.6358605”  
}  
]  
}  
},  
{  
**“@Name”: “Peripheral Gateway 101A”**  
},  
{  
**“@Name”: “Peripheral Gateway 1A”,**  
“dpProcessList”: {  
“dpProcessProp”: [  
{  
“@Description”: “Node Manager”,  
“@Name”: “nodeman.exe”,  
“@UpTime”: “10.052531.6053188”  
},  
{  
“@Description”: “Node Manager Manager”,  
“@Name”: “nmm.exe”,  
“@UpTime”: “10.052528.7846315”  
},  
{  
“@Description”: “JtapigwJVMLauncher EXE”,  
“@Name”: “jtapigw.exe”,  
“@Status”: “test-PG1A jtapigw - jgw1 - [ACTIVE]”,  
“@UpTime”: “10.052451.7927267”  
},  
{  
“@Description”: “Message Delivery System”,  
“@Name”: “mdsproc.exe”,  
“@Status”: “test-PG1A mdsproc - (InSvc Pr-Enb Clk)”,  
“@UpTime”: “10.052451.8051968”  
},  
{  
“@Description”: “OPC-CCE”,  
“@Name”: “opc-cce.exe”,  
“@Status”: “test-PG1A opc-cce.exe”,  
“@UpTime”: “10.052451.6220285”  
},  
{  
“@Description”: “PG DMP Agent”,  
“@Name”: “pgagent.exe”,  
“@Status”: “test-PG1A pgagent - (InSvc AActive BIdle)”,  
“@UpTime”: “10.052451.6203346”  
},  
{  
“@Description”: “EAGTPIM EXE”,  
“@Name”: “eagtpim.exe”,  
“@Status”: "test-PG1A eagtpim - pim1 - [CUCM\_PG01\_1 ACTIVE] ",  
“@UpTime”: “10.052451.5644641”  
},  
{  
“@Description”: “rttest application”,  
“@Name”: “testsync.exe”,  
“@Status”: “test-PG1A testsync”,  
“@UpTime”: “10.052451.5628289”  
}  
]  
}  
},  
{  
“@Name”: “Cisco ICM Diagnostic Framework”,  
“dpProcessList”: {  
“dpProcessProp”: {  
“@Description”: “Cisco ICM Diagnostic Framework”,  
“@Name”: “DiagFwSvc.exe”,  
“@UpTime”: “10.052318.6787144”  
}  
}  
},  
{  
“@Name”: “Peripheral Gateway 100A”,  
“dpProcessList”: {  
“dpProcessProp”: [  
{  
“@Description”: “Node Manager”,  
“@Name”: “nodeman.exe”,  
“@UpTime”: “7.015007.0718110”  
},  
{  
“@Description”: “Node Manager Manager”,  
“@Name”: “nmm.exe”,  
“@UpTime”: “7.015006.7374239”  
},  
{  
“@Description”: “Message Delivery System”,  
“@Name”: “mdsproc.exe”,  
“@Status”: “test-PG100A mdsproc - (InSvc Pr-Enb)”,  
“@UpTime”: “7.015006.7339806”  
},  
{  
“@Description”: “OPC-TDM”,  
“@Name”: “opc-tdm.exe”,  
“@Status”: “test-PG100A opc-tdm.exe”,  
“@UpTime”: “7.015006.7265826”  
},  
{  
“@Description”: “PG DMP Agent”,  
“@Name”: “pgagent.exe”,  
“@Status”: “test-PG100A pgagent - (InSvc AActive BIdle)”,  
“@UpTime”: “7.015006.7233020”  
},  
{  
“@Description”: “vrupim”,  
“@Name”: “vrupim.exe”,  
“@Status”: “test-PG100A vrupim - pim1 - [SECURE CVP\_PG100\_1 ACTIVE]”,  
“@UpTime”: “7.015006.7310432”  
},  
{  
“@Description”: “vrupim”,  
“@Name”: “vrupim.exe”,  
“@Status”: “test-PG100A vrupim - pim2 - [SECURE CVP\_PG100\_2 ACTIVE]”,  
“@UpTime”: “7.015006.7284294”  
},  
{  
“@Description”: “vrupim”,  
“@Name”: “vrupim.exe”,  
“@Status”: “test-PG100A vrupim - pim3 - [NON-SECURE HuCallback01 ACTIVE]”,  
“@UpTime”: “7.015006.7214459”  
},  
{  
“@Description”: “vrupim”,  
“@Name”: “vrupim.exe”,  
“@Status”: “test-PG100A vrupim - pim4 - [NON-SECURE HuCallback02 ACTIVE]”,  
“@UpTime”: “7.015006.6647717”  
},  
{  
“@Description”: “rttest application”,  
“@Name”: “testsync.exe”,  
“@Status”: “test-PG100A testsync”,  
“@UpTime”: “7.015006.5579308”  
}  
]  
}  
}  
]  
}  
}  
}  
},

---

<div class="post-metadata">

**Author:** ![jowestco](https://avatars.discourse-cdn.com/v4/letter/j/85f322/32.png) [@jowestco](https://forum.ansible.com/u/jowestco)\
**Post date:** [August 29, 2020, 7:02pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/2 "2020-08-29T19:02:55Z")

</div>

If I’m reading the json right, try: {{ hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService[0][‘@Name’] }}

-John

---

<div class="post-metadata">

**Author:** ![Kevin\_Hoyt](https://avatars.discourse-cdn.com/v4/letter/k/d78d45/32.png) [@Kevin\_Hoyt](https://forum.ansible.com/u/Kevin_Hoyt)\
**Post date:** [August 29, 2020, 7:20pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/3 "2020-08-29T19:20:31Z")

</div>

Hi John,

Thank you for the response. I just tried it and got the following error:  
“msg”: “template error while templating string: unexpected char u’\u2018’ at 63. String: {{ hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService[0][‘@Name’] }}”

It just doesn’t seem to like that ‘@Name’ at all. Do you have any other suggestions?

Thanks,  
Kevin

---

<div class="post-metadata">

**Author:** ![Richard\_Megginson](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/richard_megginson/32/4540_2.png) [@Richard\_Megginson](https://forum.ansible.com/u/Richard_Megginson)\
**Post date:** [August 29, 2020, 8:31pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/4 "2020-08-29T20:31:54Z")

</div>

> Hi John,
> 
> Thank you for the response. I just tried it and got the following error:  
> "msg": "template error while templating string: unexpected char u'\\u2018' at 63. String: {{ hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService[0][‘@Name’] }}"

Must be a copy/paste error - those single quotes around @Name are not ASCII quotes:

\>cat \<\<EOF | od -c  
\> [‘@Name’]  
\> EOF  
0000000 [342 200 230 @ N a m e 342 200 231] \n  
0000016

Works fine for me if I use plain ASCII single quotes.

---

<div class="post-metadata">

**Author:** ![Kevin\_Hoyt](https://avatars.discourse-cdn.com/v4/letter/k/d78d45/32.png) [@Kevin\_Hoyt](https://forum.ansible.com/u/Kevin_Hoyt)\
**Post date:** [August 29, 2020, 9:18pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/5 "2020-08-29T21:18:43Z")

</div>

Ahh got it! ok, that worked. 1 more question, since that is an array at dpService, I want to iterate through that. I tried leaving the brackets blank, but that failed. How would I tell it to give me each element?

Thanks for the help!  
Kevin

---

<div class="post-metadata">

**Author:** ![Richard\_Megginson](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/richard_megginson/32/4540_2.png) [@Richard\_Megginson](https://forum.ansible.com/u/Richard_Megginson)\
**Post date:** [August 30, 2020, 5:51pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/6 "2020-08-30T17:51:32Z")

</div>

> Ahh got it! ok, that worked. 1 more question, since that is an array at dpService, I want to iterate through that. I tried leaving the brackets blank, but that failed. How would I tell it to give me each element?

I guess it depends on what you want to do with it.

Do you want to use it in a loop? [https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_loops.html#](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#)

Do you want to select some elements from the list? [https://jinja.palletsprojects.com/en/2.11.x/templates/#select](https://jinja.palletsprojects.com/en/2.11.x/templates/#select) or selectattr

Do you want to perform some modification to each item? [https://jinja.palletsprojects.com/en/2.11.x/templates/#map](https://jinja.palletsprojects.com/en/2.11.x/templates/#map)

or [https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_filters.html#list-filters](https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#list-filters)

---

<div class="post-metadata">

**Author:** ![Kevin\_Hoyt](https://avatars.discourse-cdn.com/v4/letter/k/d78d45/32.png) [@Kevin\_Hoyt](https://forum.ansible.com/u/Kevin_Hoyt)\
**Post date:** [August 30, 2020, 5:54pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/7 "2020-08-30T17:54:17Z")

</div>

Hi Rich,

I’m looking to collect the name field into a list and then use that in further tasks.

Thanks,  
Kevin

---

<div class="post-metadata">

**Author:** ![Richard\_Megginson](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/richard_megginson/32/4540_2.png) [@Richard\_Megginson](https://forum.ansible.com/u/Richard_Megginson)\
**Post date:** [August 30, 2020, 7:03pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/8 "2020-08-30T19:03:19Z")

</div>

> Hi Rich,
> 
> I'm looking to collect the name field into a list and then use that in further tasks.

Something like this:

set\_fact:

keyvallist: "{{ hc\_pim\_info.dpListProcessesReply.dpServiceList.dpService | map(attribute='@key') | list }}"

see the examples under [https://jinja.palletsprojects.com/en/2.11.x/templates/#map](https://jinja.palletsprojects.com/en/2.11.x/templates/#map)

---

<div class="post-metadata">

**Author:** ![Kevin\_Hoyt](https://avatars.discourse-cdn.com/v4/letter/k/d78d45/32.png) [@Kevin\_Hoyt](https://forum.ansible.com/u/Kevin_Hoyt)\
**Post date:** [August 30, 2020, 7:21pm UTC](https://forum.ansible.com/t/json-parsing-help/33698/9 "2020-08-30T19:21:55Z")

</div>

awesome! thanks, I’ll try it.

Kevin
