JSONPath-mappaukset Generic REST API connector -yhteysmoduulille
Learn how to effectively use JsonPath mappings to streamline data extraction in a Generic REST API connector for enhanced integration.
JSONPath-mappaukset Generic REST API connector -yhteysmoduulille
Learn how to effectively use JsonPath mappings to streamline data extraction in a Generic REST API connector for enhanced integration.
Generic REST API Connector -yhteysmoduulin avulla voidaan määrittää attribuuttimappauksia JSONPath-kielellä.
Seuraava taulukko näyttää tuetut ja ei-tuetut JSONPath-syntaksit. Koska mahdollisia JSONPath-lausekkeita on niin paljon, tämä taulukko ei sisällä kaikkea. Jokin tuettujen ulkopuolinen syntaksi todennäköisesti toimii myös.
Suurin ei-tuettu asia on se, että jos JSONPath palauttaa taulukon (array) JSON-objekteja, sitä ei tueta.
JSONPath-mappaukset testattiin tätä esimerkki-JSONia vastaan:
{
"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": {
"a.b": "dot-key",
"space key": "space-key",
"brackets[key]": "bracket-key"
}
}Tuetut ja ei-tuetut JSONPath-syntaksit
| Standardi JSONPath | Yhteysmoduulin mappaustaulukossa käytetty syntaksi | Esimerkkitulos annetulla JSON-esimerkillä | Huomiot | Tila |
|---|---|---|---|---|
$.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" |
Hakasulkumerkintä toimii | Tuettu |
$.user.meta.active |
user.meta.active |
true |
Totuusarvo (boolean) | Tuettu |
$.user.meta.score |
user.meta.score |
42 |
Useita sisäkkäisiä ominaisuuksia. Numeroarvo (mapataan merkkijonoksi tai numeroksi) | Tuettu |
$.store.nested.price |
store.nested.price |
9.99 |
Useita sisäkkäisiä ominaisuuksia. Desimaaliarvo (mapataan merkkijonoksi tai desimaaliluvuksi) | Tuettu |
$.groups |
groups |
["Admin","HR"] |
Merkkijonotaulukko (mapataan monivalintaiseksi merkkijonoattribuutiksi) | Tuettu |
$.groupObjects[*].name |
groupObjects[*].name |
["Admin","HR"] |
Projektio merkkijonotaulukkoon (mapataan monivalintaiseksi merkkijonoattribuutiksi) | 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 (mapataan monivalintaiseksi merkkijonoattribuutiksi) Myös muut vertailuoperaattorit ovat tuettuja, kuten: == <= >= > < != |
Tuettu |
$.groupObjects[?(@.enabled==false)].name |
groupObjects[?(@.enabled==false)].name |
["HR"] |
Totuusarvosuodatin (boolean) (mapataan monivalintaiseksi merkkijonoattribuutiksi) |
Tuettu |
$.groupObjects |
groupObjects |
[{"name":"Admin",...},{"name":"HR",...}] |
Palauttaa taulukon JSON-objekteja | Ei tuettu |
$.groupObjects[*] |
groupObjects[*] |
[{"name":"Admin",...},{"name":"HR",...}] |
Projektio palauttaa taulukon JSON-objekteja | Ei tuettu |
$.storeList[?(@.price<30)] |
storeList[?(@.price<30)] |
[{"id":"s1",...},{"id":"s2",...}] |
Suodatin palauttaa taulukon JSON-objekteja | Ei tuettu |
$.storeList[?(@.name=='Shop 1')].price |
storeList[?(@.name=='Shop 1')].price |
[10] |
Merkkijonosuodatin, joka sisältää välilyönnin, epäonnistuu | Ei tuettu |
$..id |
..id |
[ "u-123", "child-1", "child-2", ... ] |
Rekursiivinen läpikäynti (recursive descent) | Ei tuettu |
$.store.* |
store.* |
["abc","xyz",{...}] |
Objektin jokerimerkki (wildcard) | Ei tuettu |
$ |
. |
Koko JSON-runko | Tuettu versiosta 2026.1.1 alkaen | |
$.store |
store |
{"book":"abc","bike":"xyz","nested":{"price":9.99,"currency":"EUR"}} |
Suodatin palauttaa yhden JSON-objektin (mapataan tekstiattribuutiksi, koska merkkijonoattribuutti voi olla liian lyhyt JSON-objektille) | Tuettu versiosta 2026.1.1 alkaen |
$.weirdKeys.['a.b']
|
weirdKeys.['a.b'] |
“dot-key” |
Suodatin attribuutille, joka sisältää pisteen | Tuettu versiosta 2026.1.1 alkaen |
Alikyselymappaukset
Alikyselymappauksen ensimmäinen osa on itse alikysely, sitten piste ja sen jälkeen varsinainen JSONPath samalla tavalla kuin tuettujen JSONPath-syntaksien taulukossa.
Esimerkki käyttäjän ryhmäjäsenyyksien hakemisesta Googlesta
Alikysely: groups?userKey={id}
Alikyselyssä {id} on dynaaminen muuttuja, joka tässä tapauksessa viittaa pääkyselyn tulosjoukon id-attribuuttiin. JSONPath ei ole tuettu alikyselyissä.
Mappaus tälle alikyselylle, jolla haetaan niiden ryhmien id:t, joihin käyttäjä kuuluu:
groups?userKey={id}.groups[*].id, jossa varsinainen JSONPath on tämä loppuosa: groups[*].id
Esimerkki Googlen groups-API:n JSONista. Alikyselyn ja mappauksen avulla voimme poimia ryhmien id:t 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