Okta Workflows How-to: JSON-Pfad mit Punktnotation auslesen

Über den Autor/die Autorin

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

28 Oktober 2022 Lesezeit: ~

A person is seated at a desk working on a computer in a modern office environment

Okta Workflows ist eine No-Code-Plattform zur Automatisierung von Identitätsprozessen. Das Workflows-Team veranstaltet wöchentliche Sprechstunden, in denen es Fragen von Entwickler:innen beantwortet.

Dieser Blogbeitrag basiert auf einer Frage, die während der Sprechstunde gestellt wurde: Wie liest man einen JSON-Pfad mit Punktnotation in Workflows? 

Erste Schritte

Wenn Sie Workflows-Automatisierungen erstellen, müssen Sie wahrscheinlich Werte aus einem JSON-Objekt auslesen. Zum Beispiel von einem externen API-Endpoint, der Daten als JSON zurückgibt. Workflows verfügen über zwei Karten zum Lesen (Abrufen) von Werten aus JSON:

  • Objekt – Abrufen
  • Objekt – Mehrere

Verwenden Sie das folgende JSON, um zu zeigen, wie die Karten funktionieren. 

{
    "product": "ice cream",
    "ingredients": {
        "ingredient": [{
                "id": 100,
                "type": "chocolate"
            },
            {
                "id": 200,
                "type": "vanilla"
            },
            {
                "id": 300,
                "type": "caramel"
            }
        ]
    },
    "shop": {
        "inventory": {
            "instock": 100,
            "ordered": 50
        }
    }
}

Die Punktnotation ist ein Pfad, der einem Element in JSON entspricht. 

Zum Beispiel gibt ein Pfad von product Folgendes zurück:

ice cream

Verwenden der Karte „Object – Get“ zum Lesen von JSON

Verwenden Sie in Workflows Object – Get, um einen JSON-Pfad auszulesen: 

Okta Workflows Object Get card displaying an input object with product and ingredients JSON, a path set to product, and an empty output field. Verwenden der Get-Karte zum Lesen von JSON-Pfaddaten

Diese Karte testen:

Test "Get" modal displaying an input JSON object, path notation set to product, and evaluated output string "ice cream". Testen der Karte „Get“

Sehen wir uns weitere Beispiele an. 

Der Pfad ingredients.ingredient.0 führt zu:

{
  "id": 100,
  "type": "chocolate"
}

Ergebnis beim Testen mit der Object – Get -Karte: 

Interface for testing a JSON path with dot notation, showing input JSON, path ingredients.ingredient.0, and output JSON. Verwendung der Punktnotation im Pfad

Dabei ist zu beachten, dass der Ausgabetyp mit dem JSON-Typ übereinstimmen muss. Wenn der von Ihnen eingegebene Pfad Klartext abruft, sollte der Typ Text sein. Wenn der Pfad ein Objekt abruft, sollte der Typ auf Objekt gesetzt werden (andernfalls erhält man fehlerhafte Ergebnisse). 

Ausgehend vom obigen Beispiel führt die Einstellung des Ausgabetyps auf Text zu folgendem Ergebnis: 

Test "Get" interface showing a JSON input object, path notation ingredients.ingredient.0, and output displaying [object Object]. Testen der Get-Karte mit einem falschen Ausgabetyp

Korrekten Ausgabetyp festlegen: 

Okta Workflows Object Get card configured with path ingredients.ingredient.0 and an orange arrow pointing to the output field labeled "Enter key name here". Testen der Get-Karte mit einem korrekten Ausgabetyp

Dieses Beispiel zeigt, wie Sie auf ein Array mit ingredients.ingredient.1.type zugreifen:

Test "Get" modal displaying an array with chocolate and vanilla objects, path ingredients.ingredient.1.type, and output value "vanilla". Zugriff auf ein Array über einen Pfad in Punktnotation

Beachten Sie, dass der Ausgabetyp auf Text festgelegt ist, da die Ausgabe ein String ist. 

Ein weiteres Beispiel mit dem Pfad shop.inventory gibt Folgendes zurück

{
   "instock": 100,
   "ordered": 50
}
Test "Get" modal displaying an input object with shop inventory JSON, path shop.inventory, and output JSON showing instock and ordered counts. Testen der Get-Karte für den Zugriff auf ein JSON-Objekt

Beachten Sie, dass der Ausgabetyp auf Objekt festgelegt ist, da die Ausgabe ein Objekt ist. 

Verwendung von „Objekt – Mehrere abrufen“ zum Lesen von JSON

Objekt – Abrufen gibt einen einzelnen JSON-Pfad aus. Die Karte Object – Get Multiple funktioniert ähnlich und kann mehrere Pfade ausgeben. Sie geben eine beliebige Anzahl von Pfaden ein, die Sie als Ausgabe benötigen:

Okta Workflows Object Get Multiple card showing JSON input data, multiple path inputs including product and shop.inventory, and an orange arrow pointing to a selected path field. Verwendung der Karte „Get multiple“

Beachten Sie, dass der Ausgabetyp bei Verwendung der Karte Object – Get Multiple im Pfad festgelegt wird. 

Test "Get Multiple" modal displaying input JSON and corresponding outputs for paths product, ingredients.ingredient.0, ingredients.ingredient.1.type, and shop.inventory. Testen Sie die Karte „Get multiple“

Der JSONPath Online Evaluator ist ein Online-Tool, mit dem Sie Ihre Pfade in Punktnotation testen können. 

JSONPath Online Evaluator web interface showing input JSON, JSONPath shop.inventory, and evaluated results displaying instock and ordered counts. JSONPath Online-Evaluator-Tool

Wenn Sie ein JSON-Beispiel validieren (und formatieren) müssen, verwenden Sie das JSON Lint -Tool.

Erhalten Sie Antworten auf Ihre Fragen zu Workflows

Haben Sie eine Frage zu Okta Workflows? Sie sind sich nicht sicher, wie Sie einen Flow erstellen? Nehmen Sie an den wöchentlichen Sprechstunden der Community teil, um Hilfe zu erhalten. 

Über den Autor/die Autorin

Max Katz

Staff Developer Advocate, Okta Workflows

Max Katz is a Staff Developer Advocate for Okta Workflows. Max loves the no-code automation space and creating educational content. Before Okta, Max led the North America Developer Advocacy team at IBM. Before IBM, Max led developer advocacy for a cloud-based mobile app platform, Appery, helping it grow from zero to over 400,000 developers. Max regularly writes on his http://maxkatz.net blog. 

Setzen Sie Ihre Identity Journey fort