JSONPath-mappningar för generisk REST API anslutning
Lär dig hur du effektivt använder JsonPath-mappningar för att effektivisera dataextraktion i en generisk REST API anslutning för förbättrad integration.
JSONPath-mappningar för generisk REST API anslutning
Lär dig hur du effektivt använder JsonPath-mappningar för att effektivisera dataextraktion i en generisk REST API anslutning för förbättrad integration.
Generic REST API Connector gör det möjligt att konfigurera attributmappningar med hjälp av JSONPath-språket.
Följande tabell visar JSONPath-syntaxer som stöds och inte stöds. Eftersom det finns så många möjliga JSONPath-uttryck innehåller den här tabellen inte allt. Så något utöver de som stöds fungerar förmodligen också.
Det viktigaste som inte stöds är att om JSONPath returnerar en array av JSON-objekt, så stöds det inte.
JSONPath-mappningar testades mot detta exempel på json:
{
"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"
}
}JSONPath-syntaxer som stöds och inte stöds
| Standard JSONPath | Syntax som används i tabellen för kopplingsmappning | Exempelresultat | Anteckningar | Status |
|---|---|---|---|---|
$.id
|
id
|
"u-123"
|
Enkel skalär egenskap | Stöds |
$.user.name
|
user.name
|
"Ada Lovelace"
|
Kapslad egenskap | Stöds |
$.user.email
|
user.email
|
"ada@example.com"
|
Kapslad egenskap | Stöds |
$.user['first-name']
|
user['first-name']
|
"Ada"
|
Klammernotation fungerar | Stöds |
$.user.meta.active
|
user.meta.active
|
true
|
Booleskt värde | Stöds |
$.user.meta.score
|
user.meta.score
|
42
|
Flera kapslade egenskaper. Number-värde (mappas till sträng eller tal) | Stöds |
$.store.nested.price
|
store.nested.price
|
9.99
|
Flera kapslade egenskaper. Decimalvärde (mappas till sträng eller decimaltal) | Stöds |
$.groups
|
groups
|
["Admin","HR"]
|
Matris med strängar (mappas till flervärdes-strängattribut) | Stöds |
$.groupObjects[*].name
|
groupObjects[*].name
|
["Admin","HR"]
|
Pro till strängmatris (mappning till flervärdessträngattribut) | Stöds |
$.storeList[?(@.id=='s1')].price
|
storeList[?(@.id=='s1')].price
|
[10]
|
Strängfilter utan mellanslag | Stöds |
$.storeList[?(@.price<30)].id
|
storeList[?(@.price<30)].id
|
["s1","s2"]
|
Numeriskt filter (mappa till flervärdessträngattribut) Även andra jämförelseoperatorer stöds, som: == <= >= > < != |
Stöds |
$.groupObjects[?(@.enabled==false)].name
|
groupObjects[?(@.enabled==false)].name
|
["HR"]
|
Booleskt filter (mappa till flervärdessträngattribut) |
Stöds |
$.groupObjects
|
groupObjects
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Returnerar en array av JSON-objekt | Stöds inte |
$.groupObjects[*]
|
groupObjects[*]
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Pro returnerar en array av JSON-objekt | Stöds inte |
$.storeList[?(@.price<30)]
|
storeList[?(@.price<30)]
|
[{"id":"s1",...},{"id":"s2",...}]
|
Filtret returnerar en array av JSON-objekt | Stöds inte |
$.storeList[?(@.name=='Shop 1')].price
|
storeList[?(@.name=='Shop 1')].price
|
[10]
|
Strängfilterlitteral som innehåller mellanslag misslyckas | Stöds inte |
$..id
|
..id
|
[ "u-123", "child-1", "child-2", ... ]
|
Rekursiv nedstigning | Stöds inte |
$.store.*
|
store.*
|
["abc","xyz",{...}]
|
Objektjokertecken | Stöds inte |
Underfrågemappningar
Den första delen av underfrågemappningarna är själva underfrågan, sedan punkt och sedan faktisk JSONPath på samma sätt som i tabellen med JSONPath-syntaxer som stöds.
Exempel på hur man hämtar användargruppmedlemskap från Google
Delfråga: groups?userKey={id}
I delfrågan är {id} en dynamisk variabel, som i det här fallet pekar på huvudfrågans resultatmängds-id-attribut. JSONPath stöds inte för delfrågor.
Mappning för den delfrågan, för att hämta ID:n för grupper som en användare tillhör:
groups?userKey={id}.groups[*].id där den faktiska JSONPath är denna del i slutet: groups[*].id
Exempel på Google Groups API json. Med delfråga och mappning kan vi välja ID:n för grupper från denna resultatmängd.
{
"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