Reputation: 305
This is the JSONcontent I registered:
results:[{
"json": {
"item": {
"param": [
[
{
"metrics1": "A",
"metrics2": "B"
"metrics3": "C"
},
{
"metrics1": "D",
"metrics2": "E"
"metrics3": "F"
},
{
"metrics1": "G",
"metrics2": "H"
"metrics3": "I"
}
],
[
{
"metrics1": "J",
"metrics2": "K"
"metrics3": "L"
},
{
"metrics1": "M",
"metrics2": "N"
"metrics3": "O"
},
{
"metrics1": "P",
"metrics2": "Q"
"metrics3": "R"
}
],
],
}
}
}
]
I want to get metrics2 and metrics3 as a table where metrics2 value as column1 and metrics3 value as column2
I try parsing metrics2 first but it returns undefined value like this
"parseJSON_list": "[AnsibleUndefined, AnsibleUndefined, AnsibleUndefined]"
What I tried is:
parseJSON: "{{ JSONcontent['results'] | map(attribute='json') | map(attribute='item') | map(attribute='param') | map(attribute= 'metrics2') | list }}"
It works fine until map(attribute= 'metrics2')
What should I do?
Upvotes: 1
Views: 139
Reputation: 68024
Q: "Table where metrics2 value as column1 and metrics3 value as column2."
A: For example,
tab_m2_m3: "{{ param|json_query('[][].[metrics2, metrics3]') }}"
gives
tab_m2_m3:
- [B, C]
- [E, F]
- [H, I]
- [K, L]
- [N, O]
- [Q, R]
Example of a complete playbook
- hosts: localhost
vars:
param:
- - {metrics1: A, metrics2: B, metrics3: C}
- {metrics1: D, metrics2: E, metrics3: F}
- {metrics1: G, metrics2: H, metrics3: I}
- - {metrics1: J, metrics2: K, metrics3: L}
- {metrics1: M, metrics2: N, metrics3: O}
- {metrics1: P, metrics2: Q, metrics3: R}
tab_m2_m3: "{{ param|json_query('[][].[metrics2, metrics3]') }}"
tasks:
- debug:
var: tab_m2_m3
Upvotes: 1