JSONPath Tester
Understand JSONPath Tester
JSONPath ist eine Abfragesprache für JSON, und dieser Tester lässt einen Ausdruck auf Ihre Daten laufen und liefert jeden Wert zurück, den er trifft.
How it works
Ein Ausdruck beginnt bei $, der Wurzel des Dokuments, und jeder Schritt engt die weitergereichte Wertemenge ein: .name und ['name'] nehmen einen Schlüssel, [2] nimmt ein Array-Element und ein negativer Index zählt vom Ende, * nimmt jedes Kind, ..name sucht auf jeder Ebene nach diesem Schlüssel, und [?(@.price < 10)] behält die Array-Elemente, deren Feld den Vergleich erfüllt. Das Ergebnis ist immer eine Liste, und eine leere Liste ist eine gültige Antwort und kein Fehler.
When to use it
- Ein einzelnes Feld aus einer tief verschachtelten API-Antwort ziehen, ohne den Durchlauf von Hand zu schreiben.
- Den richtigen Ausdruck ermitteln, bevor er in eine Konfigurationsdatei kommt – Kubernetes, Jenkins, Postman-Tests und viele Log-Werkzeuge nehmen JSONPath an.
- Zählen, wie viele Elemente in einer Antwort eine Bedingung erfüllen.
- Jedes Vorkommen eines Schlüssels finden, wenn Sie nicht wissen, wo im Dokument er steht.
Watch out for
- Ein Filter nimmt einen Vergleich. [?(@.price < 10 && @.stock > 0)] wird nicht unterstützt, und Filter gelten für Arrays – auf ein Objekt angewandt treffen sie nichts.
- Slice-Syntax wird nicht unterstützt und scheitert leise statt laut: [0:2] wird als Index 0 gelesen und liefert ein einzelnes Element.
- Der rekursive Abstieg findet mehr, als Sie erwarten. $..id liefert jede id in jeder Tiefe zurück, auch solche in unbeteiligten verschachtelten Objekten, in der Reihenfolge des Dokuments.
- JSONPath hatte bis RFC 9535 im Jahr 2024 keinen formalen Standard, Implementierungen sind sich bei Randfällen also uneinig. Ein Ausdruck, der hier funktioniert, kann sich in Jayway, jsonpath-plus oder im Abfragefeld eines Cloud-Anbieters anders verhalten – testen Sie ihn dort, wo er tatsächlich laufen wird.
Not the right tool for: Daten umzuformen. JSONPath wählt Werte aus; sie in ein neues Dokument umzuformen ist die Aufgabe von jq und JMESPath.
Frequently Asked Questions
Was ist der Unterschied zwischen $.store.book[*].title und $..title?
$.store.book[*].title folgt einem bestimmten Pfad und holt die Titel aus dem book-Array. $..title nutzt den rekursiven Abstieg (..) und findet ALLE "title"-Schlüssel irgendwo im Dokument, in jeder Verschachtelungstiefe. Der rekursive Abstieg ist mächtig, kann in komplexen Dokumenten aber unerwartete Ergebnisse liefern.
Wie funktionieren Filterausdrücke?
Filterausdrücke nutzen die Syntax [?(@.key Operator Wert)]: $..book[?(@.price < 10)] findet alle Bücher mit einem Preis unter 10. Operatoren: == != < <= > >=. Das Symbol @ verweist auf das gerade ausgewertete Element.
Ist JSONPath standardisiert?
JSONPath wurde 2007 von Stefan Goessner vorgeschlagen und hatte bis RFC 9535 (2024) keinen formalen Standard. Verschiedene Implementierungen weichen in Feinheiten voneinander ab. Dieses Tool setzt die verbreitete Goessner-Teilmenge um, die zu den meisten Bibliotheken passt (jsonpath-plus, Jayway, json-path).
How to Use JSONPath Tester
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.