JSONPath-Zuordnungen für den generischen REST API Connector
Erfahren Sie, wie Sie JsonPath-Mappings effektiv nutzen können, um die Datenextraktion in einem generischen REST API Konnektor für eine verbesserte Integration zu optimieren.
JSONPath-Zuordnungen für den generischen REST API Connector
Erfahren Sie, wie Sie JsonPath-Mappings effektiv nutzen können, um die Datenextraktion in einem generischen REST API Konnektor für eine verbesserte Integration zu optimieren.
Der generische REST API Connector ermöglicht die Konfiguration von Attributzuordnungen mithilfe der JSONPath-Sprache.
Die folgende Tabelle zeigt unterstützte und nicht unterstützte JSONPath-Syntaxen. Da es sehr viele mögliche JSONPath-Ausdrücke gibt, ist diese Tabelle nicht vollständig. Daher funktionieren wahrscheinlich auch Ausdrücke außerhalb der unterstützten Liste.
Der wichtigste nicht unterstützte Punkt ist, dass es nicht unterstützt wird, wenn JSONPath ein Array von JSON-Objekten zurückgibt.
Die JSONPath-Zuordnungen wurden anhand dieses Beispiel-JSONs getestet:
{
"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"
}
}Unterstützte und nicht unterstützte JSONPath-Syntaxen
| Standard JSONPath | Syntax, die in der Connector-Zuordnungstabelle verwendet wird | Beispielergebnis | Anmerkungen | Status |
|---|---|---|---|---|
$.id
|
id
|
"u-123"
|
Einfache Skalareigenschaft | Unterstützt |
$.user.name
|
user.name
|
"Ada Lovelace"
|
Verschachtelte Eigenschaft | Unterstützt |
$.user.email
|
user.email
|
"ada@example.com"
|
Verschachtelte Eigenschaft | Unterstützt |
$.user['first-name']
|
user['first-name']
|
"Ada"
|
Die Klammernotation funktioniert | Unterstützt |
$.user.meta.active
|
user.meta.active
|
true
|
Boolescher Wert | Unterstützt |
$.user.meta.score
|
user.meta.score
|
42
|
Mehrere verschachtelte Eigenschaften. Zahlenwert (Zuordnung zu Zeichenkette oder Zahl) | Unterstützt |
$.store.nested.price
|
store.nested.price
|
9.99
|
Mehrere verschachtelte Eigenschaften. Dezimalwert (Zuordnung zu Zeichenkette oder Dezimalzahl) | Unterstützt |
$.groups
|
groups
|
["Admin","HR"]
|
Array von Zeichenketten (zu einem mehrwertigen Zeichenkettenattribut abbilden) | Unterstützt |
$.groupObjects[*].name
|
groupObjects[*].name
|
["Admin","HR"]
|
Pro auf ein Array von Strings (Zuordnung zu einem mehrwertigen String-Attribut) | Unterstützt |
$.storeList[?(@.id=='s1')].price
|
storeList[?(@.id=='s1')].price
|
[10]
|
Stringfilter ohne Leerzeichen | Unterstützt |
$.storeList[?(@.price<30)].id
|
storeList[?(@.price<30)].id
|
["s1","s2"]
|
Numerischer Filter (Zuordnung zu einem mehrwertigen Zeichenkettenattribut) Es werden auch andere Vergleichsoperatoren unterstützt, wie zum Beispiel: == <= >= > < != |
Unterstützt |
$.groupObjects[?(@.enabled==false)].name
|
groupObjects[?(@.enabled==false)].name
|
["HR"]
|
Boolescher Filter (Zuordnung zu einem mehrwertigen Zeichenkettenattribut) |
Unterstützt |
$.groupObjects
|
groupObjects
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Gibt ein Array von JSON-Objekten zurück. | Nicht unterstützt |
$.groupObjects[*]
|
groupObjects[*]
|
[{"name":"Admin",...},{"name":"HR",...}]
|
Pro Projektion gibt ein Array von JSON-Objekten zurück. | Nicht unterstützt |
$.storeList[?(@.price<30)]
|
storeList[?(@.price<30)]
|
[{"id":"s1",...},{"id":"s2",...}]
|
Der Filter gibt ein Array von JSON-Objekten zurück. | Nicht unterstützt |
$.storeList[?(@.name=='Shop 1')].price
|
storeList[?(@.name=='Shop 1')].price
|
[10]
|
Stringfilter schlägt fehl, wenn ein Leerzeichen im Filter gefunden wird. | Nicht unterstützt |
$..id
|
..id
|
[ "u-123", "child-1", "child-2", ... ]
|
Rekursiver Abstieg | Nicht unterstützt |
$.store.*
|
store.*
|
["abc","xyz",{...}]
|
Objekt-Platzhalter | Nicht unterstützt |
Unterabfrage-Zuordnungen
Die Zuordnung von Unterabfragen besteht aus dem ersten Teil der Unterabfrage selbst, dann dem Punkt und schließlich dem eigentlichen JSONPath, genau wie in der Tabelle der unterstützten JSONPath-Syntaxen.
Beispiel zum Abrufen der Gruppenzugehörigkeiten von Nutzern aus Google
Unterabfrage: groups?userKey={id}
In der Unterabfrage ist {id} eine dynamische Variable, die in diesem Fall auf das Attribut „id“ des Hauptabfrage-Ergebnisses verweist. JSONPath wird für Unterabfragen nicht unterstützt.
Zuordnung für diese Unterabfrage zum Abrufen der IDs von Gruppen, denen ein Benutzer angehört:
groups?userKey={id}.groups[*].id, wobei der eigentliche JSONPath dieser Teil am Ende ist: groups[*].id
Beispiel für JSON-Daten Google Groups API . Mithilfe von Unterabfragen und Mapping können wir die IDs von Gruppen aus diesem Ergebnissatz auswählen.
{
"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