我有以下資料:
{
"msg": [
{
"country": {
"city": {
"county": [
{
"zipcode": "code1",
"address": "add1"
},
{
"zipcode": "code2",
"address": "add2"
},
{
"zipcode": "code3",
"address": "add3"
}
]
}
},
"countyname": "county-a"
},
{
"country": {
"city": {
"county": {
"zipcode": "code1",
"address": "add1"
}
}
},
"countyname": "county-b"
}
]
}
第一次嘗試:
- name: data
debug: out= "{{msg | json_query(query)}}"
vars:
query: "[].{county: countyname, zipcode: country.city.county[].zipcode , address: country.city.county[].address}"
結果:
[
{
"county": "county-a",
"zipcode": [
"code1",
"code2",
"code3"
],
"address": [
"add1",
"add2",
"add3"
]
},
{
"Name": "county-b",
"local": null,
"remote": null
}
]
第二次嘗試:
- name: data
debug: out= "{{msg | json_query(query)}}"
vars:
query: "[].{county: countyname, zipcode: country.city.county.zipcode , address: country.city.county.address}"
結果:
[
{
"county": "county-a",
"zipcode": null,
"address": null
},
{
"county": "county-b",
"zipcode": "code1",
"address": "add1"
}
]
如果我使用query: "[].{County: countyname, zipcode: country.city.county[].zipcode, address: country.city.county[].address}",我得到null的值county-b。
如果我使用query: "[].{County: countyname, zipcode: country.city.county.zipcode, address: country.city.county.address}",我得到null的值county-a。
什么是正確的使用方法,json_query以便使用單個查詢,我得到兩個縣資料,如
[
{
"county": "county-a",
"zipcode": [
"code1",
"code2",
"code3"
],
"address": [
"add1",
"add2",
"add3"
]
},
{
"Name": "county-b",
"zipcode": "code1",
"address": "add1"
}
]
uj5u.com熱心網友回復:
您可以使用or 運算式( ||),null當第一個運算式確實是時,它將捕獲值并顯示第二個運算式null。
所以像:
zipcode: country.city.county.zipcode || country.city.county[].zipcode
因此,整個 JMESPath 查詢最終是:
[].{county: countyname, zipcode: country.city.county.zipcode || country.city.county[].zipcode, address: country.city.county.address || country.city.county[].address}
鑒于任務:
- debug:
var: msg | json_query(query)
vars:
query: >-
[].{
county: countyname,
zipcode: country.city.county.zipcode || country.city.county[].zipcode,
address: country.city.county.address || country.city.county[].address
}
msg:
- country:
city:
county:
- zipcode: code1
address: add1
- zipcode: code2
address: add2
- zipcode: code3
address: add3
countyname: county-a
- country:
city:
county:
zipcode: code1
address: add1
countyname: county-b
這產生:
{
"msg | json_query(query)": [
{
"address": [
"add1",
"add2",
"add3"
],
"county": "county-a",
"zipcode": [
"code1",
"code2",
"code3"
]
},
{
"address": "add1",
"county": "county-b",
"zipcode": "code1"
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363346.html
