Below is my json file:
[
{
“?xml”: {
“attributes”: {
“encoding”: “UTF-8”,
“version”: “1.0”
}
}
},
{
“domain”: [
{
“server”: [
{
“name”: “myserv1”
},
{
“ssl”: {
“name”: “myserv1”
}
},
{
“log”: [
{
“name”: “myserv1”
},
{
“file-name”: “/web/bea_logs/domains/mydom/myserv1/myserv1.log”
}
]
}
]
},
{
“server”: [
{
“name”: “myserv2”
},
{
“ssl”: {
“name”: “myserv2”
}
},
{
“log”: [
{
“name”: “myserv2”
},
{
“file-name”: “/web/bea_logs/domains/mydom/myserv2/myserv2.log”
}
]
},
]
}
]
}
]
I wish to parse the above json and get the data like below:
myserv1_log: /web/bea_logs/domains/mydom/myserv1/myserv1.log
myserv2_log: /web/bea_logs/domains/mydom/myserv2/myserv2.log
Below is how i try to parse the json using jmespath:
-
name: Server Names and log details
set_fact:
serverlog: “{{ jsondata | json_query(jmesquery) }}”
vars:
jmesquery: ‘.domain.server[].log[].[name, “file-name”]’ -
name: Print all server names with log details
debug:
msg: “{{ item }}”
with_items:
- “{{ serverlog }}”
Issue is that I’m getting null in the output as below:
ok: [localhost] => (item=[[[‘myserv1’, None], [None, ‘/web/bea_logs/domains/mydom/myserv1/myserv1.log’]]]) => {
“msg”: [
[
[
“myserv1”,
null
],
[
null,
“/web/bea_logs/domains/mydom/myserv1/myserv1.log”
]
]
]
}
ok: [localhost] => (item=[[[‘myserv2’, None], [None, ‘/web/bea_logs/domains/mydom/myserv2/myserv2.log’]]]) => {
“msg”: [
[
[
“myserv2”,
null
],
[
null,
“/web/bea_logs/domains/mydom/myserv2/myserv2.log”
]
]
]
}
Can you please suggest ?