JSONPath-määritykset yleiselle REST API -liittimelle
Opi käyttämään JsonPath-määrityksiä tehokkaasti tiedon poiminnan virtaviivaistamiseen yleisessä REST API -liittimessä parannetun integraation saavuttamiseksi.
JSONPath-määritykset yleiselle REST API -liittimelle
Opi käyttämään JsonPath-määrityksiä tehokkaasti tiedon poiminnan virtaviivaistamiseen yleisessä REST API -liittimessä parannetun integraation saavuttamiseksi.
Yleinen REST API -liitin mahdollistaa attribuuttimääritysten konfiguroinnin JSONPath-kielellä.
Seuraava taulukko näyttää tuetut ja ei-tuetut JSONPath-syntaksit. Koska mahdollisia JSONPath-lausekkeita on niin monta, tämä taulukko ei sisällä kaikkea. Joten luultavasti myös jokin tuettujen lausekkeiden ulkopuolelta toimiva vaihtoehto toimii.
Tärkein tuettu asia on, että jos JSONPath palauttaa taulukon JSON-objekteja, sitä ei tueta.
JSONPath-kartoituksia testattiin tätä JSON-esimerkkiä vasten:
{
"id": "u-123",
"user": {
"name": "Ada Lovelace",
"email": "ada@example.com",
"first-name": "Ada",
"meta": {
"active": true,
"score": 42,
"nullField": null
}
},
"store": {
"book": "abc",
"bike": "xyz",
"nested": {
"price": 9.99,
"currency": "EUR"
}
},
"groups": ["Admin", "HR"],
"groupObjects": [
{ "name": "Admin", "id": 1, "enabled": true },
{ "name": "HR", "id": 2, "enabled": false }
],
"child": {
"id": "child-1",
"child": {
"id": "child-2"
}
},
"storeList": [
{ "id": "s1", "name": "Shop 1", "price": 10 },
{ "id": "s2", "name": "Shop 2", "price": 20 }
],
"emptyArray": [],
"emptyObject": {},
"weirdKeys": {
"ab": "dot-key",
"space key": "space-key",
"brackets[key]": "bracket-key"
}
}Tuetut ja ei-tuetut JSONPath-syntaksit
| Standardi JSONPath | Yhdistimen yhdistämistaulukossa käytetty syntaksi | Esimerkkitulos | Muistiinpanoja | Status |
|---|---|---|---|---|
$.id
|
id
|
"u-123"
|
Yksinkertainen skalaariominaisuus | Tuettu |
$.user.name
|
user.name
|
"Ada Lovelace"
|
Sisäkkäinen ominaisuus | Tuettu |
$.user.email
|
user.email
|
"ada@example.com"
|
Sisäkkäinen ominaisuus | Tuettu |
$.user['first-name']
|
user['first-name']
|
"Ada"
|
Sulkeiden merkintätapa toimii | Tuettu |
$.user.meta.active
|
user.meta.active
|
true
|
Totuusarvo | Tuettu |
$.user.meta.score
|
user.meta.score
|
42
|
Useita sisäkkäisiä ominaisuuksia. Numeroarvo (yhdistä merkkijonoon tai lukuun) | Tuettu |
$.store.nested.price
|
store.nested.price
|
9.99
|
Useita sisäkkäisiä ominaisuuksia. Desimaaliarvo (yhdistä merkkijonoon tai desimaalilukuun) | Tuettu |
$.groups
|
groups
|
["Admin","HR"]
|
Merkkijonotaulukko (yhdistä moniarvoiseen merkkijonoattribuuttiin) | Tuettu |
$.groupObjects[*].name
|
groupObjects[*].name
|
["Admin","HR"]
|
Merkkijonotaulukon Pro (yhdistä moniarvoiseen merkkijonoattribuuttiin) | Tuettu |
$.storeList[?(@.id=='s1')].price
|
storeList[?(@.id=='s1')].price
|
[10]
|
Merkkijonosuodatin ilman välilyöntejä | Tuettu |
$.storeList[?(@.price<30)].id
|
storeList[?(@.price<30)].id
|
["s1","s2"]
|
Numeerinen suodatin (yhdistä moniarvoiseen merkkijonoattribuuttiin) Myös muita vertailuoperaattoreita tuetaan, kuten: == <= >= > < != |
Tuettu |
$.groupObjects[?(@.enabled==false)].name
|
groupObjects[?(@.enabled==false)].name
|
["HR"]
|
Boolen suodatin (yhdistä moniarvoiseen merkkijonoattribuuttiin) |
Tuettu |
$.groupObjects
|
groupObjects
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Palauttaa JSON-objektien taulukon | Ei tuettu |
$.groupObjects[*]
|
groupObjects[*]
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Pro palauttaa JSON-objektien taulukon | Ei tuettu |
$.storeList[?(@.price<30)]
|
storeList[?(@.price<30)]
|
[{"id":"s1",...},{"id":"s2",...}]
|
Suodatin palauttaa JSON-objektien taulukon | Ei tuettu |
$.storeList[?(@.name=='Shop 1')].price
|
storeList[?(@.name=='Shop 1')].price
|
[10]
|
Merkkijonosuodattimen literaali, joka sisältää välilyöntiä, epäonnistuu | Ei tuettu |
$..id
|
..id
|
[ "u-123", "child-1", "child-2", ... ]
|
Rekursiivinen laskeutuminen | Ei tuettu |
$.store.*
|
store.*
|
["abc","xyz",{...}]
|
Objektin jokerimerkki | Ei tuettu |
Alikyselymääritykset
Alikyselymäärittelyjen ensimmäinen osa on itse alikysely, sitten piste ja lopuksi varsinainen JSONPath, samalla tavalla kuin tuettujen JSONPath-syntaksien taulukossa.
Esimerkki käyttäjien ryhmäjäsenyyksien hakemisesta Google
Alikysely: groups?userKey={id}
Alikyselyssä {id} on dynaaminen muuttuja, joka tässä tapauksessa viittaa pääkyselyn tulosjoukon id-attribuuttiin. JSONPath-funktiota ei tueta alikyselyissä.
Kyseisen alikyselyn kartoitus, jolla noudetaan niiden ryhmien tunnisteet, joihin yksi käyttäjä kuuluu:
groups?userKey={id}.groups[*].id, jossa varsinainen JSONPath on tämä lopussa oleva osa: groups[*].id
Esimerkki Google Groups API JSON-tiedostosta. Alikyselyn ja mappingin avulla voimme valita ryhmien tunnukset tästä tulosjoukosta.
{
"kind": "directory#groups",
"etag": "\"p7cdf8ab12e9\"",
"groups": [
{
"kind": "directory#group",
" id ": " 01abcde123456789 ",
"etag": "\"abc123etag\"",
"email": "engineering@efectebaselinedev.onmicrosoft.com",
"name": "Engineering Team",
"description": "Main engineering group",
"directMembersCount": "15",
"adminCreated": true,
"aliases": [
"eng@efectebaselinedev.onmicrosoft.com"
],
"nonEditableAliases": [
"engineering@group.calendar.google.com"
]
},
{
"kind": "directory#group",
" id ": " 02xyz987654321 ",
"etag": "\"xyz456etag\"",
"email": "support@efectebaselinedev.onmicrosoft.com",
"name": "Support",
"description": "Customer support group",
"directMembersCount": "8",
"adminCreated": true
}
],
"nextPageToken": "CgYIARAA"
}
Table of Contents