JSONPath-Tester
Testen Sie einen JSONPath-Ausdruck an Ihrem JSON und sehen Sie jeden Treffer mit seinem exakten Pfad und JSON Pointer.
Eingabe
Ergebnis
Das Ergebnis erscheint hier.Mit JSONPath werden Werte aus JSON herausgegriffen – in API-Testwerkzeugen, AWS Step Functions, Log-Pipelines und der Ausgabe -o jsonpath von kubectl –, und Ausdrücke sind leicht auf subtile Weise falsch. Fügen Sie das Dokument ein, geben Sie einen Ausdruck ein und sehen Sie genau, was er auswählt: Jeder Treffer kommt mit seinem normalisierten Pfad und seinem JSON Pointer zurück, sodass Sie erkennen, welches Element welches Arrays getroffen wurde, und nicht nur, welchen Wert es hatte. Ausgeführt wird JSONPath-Plus, die meistgenutzte JavaScript-Implementierung, die die ursprüngliche Syntax um Filter, rekursiven Abstieg und den Elternoperator ^ erweitert.
So arbeitet es
- Filter wie $[?(@.stargazers_count > 100000)] laufen im sicheren Evaluator von JSONPath-Plus, der den Ausdruck selbst interpretiert, statt ihn als JavaScript auszuführen.
- Jeder Treffer trägt seinen Pfad in Klammernotation und als JSON Pointer nach RFC 6901, bereit für eine JSON-Patch-Operation.
- Zeigen Sie nur Werte an, um ein flaches Array der Ergebnisse zu erhalten, oder nur Pfade, wenn Sie die Liste der Fundstellen möchten.
- Ein leeres Array ist kein Fehler: Es bedeutet, dass der Ausdruck gültig ist und schlicht nichts ausgewählt hat.
Wohin Ihre Daten gehen
Nirgendwohin. Dieses Werkzeug läuft vollständig in Ihrem Browser: Der eingefügte Text wird von der Seite verarbeitet und weder an einen Server übertragen noch protokolliert.
Dieses Tool ist kostenlos und braucht kein Konto. Die Ergebnisse existieren nur in Ihrer geöffneten Seite und werden nirgends gespeichert.
Was es kostet
Dieses Werkzeug ist kostenlos, ohne Anmeldung und ohne Punkte.
Häufige Fragen
- Ist das dasselbe JSONPath wie in RFC 9535?
- Größtenteils, aber nicht ganz. RFC 9535 hat JSONPath 2024 standardisiert, lange nachdem JSONPath-Plus geschrieben wurde, und bei der Filtersyntax gehen die beiden auseinander: Der RFC schreibt $[?@.price < 10] mit einem eigenen Satz an Funktionen, während JSONPath-Plus die ursprüngliche Form $[?(@.price < 10)] verwendet. Einfache Pfade, Wildcards, Slices und rekursiver Abstieg verhalten sich gleich.
- Funktioniert ein Ausdruck, der hier klappt, auch in kubectl?
- Einfache schon. kubectl verpackt seinen eigenen JSONPath-Dialekt in eine Template-Syntax (kubectl get pods -o jsonpath='{.items[*].metadata.name}'); lassen Sie also die geschweiften Klammern weg und stellen Sie ein $ voran, um den Pfadteil hier zu testen. Filter und Funktionen unterscheiden sich zwischen beiden, prüfen Sie daher alles, was über einfache Auswahl hinausgeht, direkt mit kubectl.
- Warum scheitert mein Filter mit einem Fehler beim Lesen einer Eigenschaft?
- Der sichere Evaluator erlaubt Eigenschaftszugriffe, Vergleiche und Logik auf dem aktuellen Knoten und verweigert Methodenaufrufe, Konstruktoren und alles andere, was beliebigen Code ausführen würde. Das ist Absicht: Ein Ausdruck, den Sie von irgendwoher eingefügt haben, soll nie in Ihrem Browser ausgeführt werden können.
- Was ist der Unterschied zwischen .. und *?
- * trifft jedes direkte Kind eines Knotens; .. steigt durch jede Ebene darunter ab. $..name findet einen Schlüssel name in beliebiger Tiefe, während $[*].name nur eine Ebene tief in das Array der obersten Ebene schaut. Rekursiver Abstieg über ein großes Dokument kann weit mehr Treffer liefern, als Sie erwarten.
Das Open Source dahinter
Dieses Werkzeug läuft auf JSONPath-Plus/JSONPath, veröffentlicht unter MIT. Wer dasselbe Verhalten im eigenen Programm braucht, greift zu dieser Bibliothek.
JSONPath-Plus/JSONPathAuch bekannt als
- JSONPath Tester
- JSONPath online testen
- JSONPath Evaluator
- JSONPath Filter Ausdruck
- JSONPath Syntax
- JSONPath Beispiele