Zum Inhalt springen

JSONPath-Tester

JSONPath Tester

Führt einen JSONPath-Ausdruck gegen ein Dokument aus und hebt die passenden Knoten beim Tippen hervor.

Führt eine JSONPath-Abfrage gegen ein Dokument aus und zeigt jeden ausgewählten Knoten mit dem Pfad zu ihm. Es implementiert RFC 9535 – den Standard von 2024 – und nicht eine der zwanzig Jahre zueinander inkompatibler Implementierungen davor, was zählt, sobald Ihre Abfrage einen Filter enthält.

🔒 Läuft vollständig in Ihrem Browserjsonjsonpathquerytest

Abfrage

Von der Wurzel aus: irgendwo darunter, das Member „book“; dann die Kinder, die den Filter bestehen; dann das Member „title“.

Dokument

Treffer

Die Ergebnisse erscheinen hier, während Sie tippen.

Das folgt RFC 9535, dem Standard von 2024, und nicht den zwanzig Jahren inkompatibler Implementierungen davor. Die Unterschiede, die wehtun: Ein Ergebnis ist eine Knotenliste und behält Duplikate, .. besucht einen Knoten vor seinen Kindern, ein fehlender Member ist nur einem anderen fehlenden Member gleich, und der Vergleich mit einer Abfrage, die mehrere Knoten treffen könnte, ist ein Syntaxfehler statt einer Vermutung. Muster in match() und search() gehen an die Regex-Engine des Browsers selbst, die mehr akzeptiert als der I-Regexp-Dialekt, den die RFC vorschreibt.

So funktioniert es

  1. Fügen Sie das Dokument ein

    Alles, was als JSON parst. Die Abfrage läuft in einem Worker, sodass ein großes Dokument die Seite reaktionsfähig hält, während Sie tippen.

  2. Schreiben Sie die Abfrage, oder beginnen Sie mit einem Beispiel

    Die Schaltflächen unter dem Feld decken die Formen ab, die man braucht: ein Wildcard, eine Nachfahrensuche, ein Slice, ein Filter, ein regulärer Ausdruck und eine Funktion. Eine Beschreibung in Klartext, was Ihre Abfrage bedeutet, erscheint darüber.

  3. Lesen Sie die Treffer mit ihren Pfaden

    Jedes Ergebnis trägt den normalisierten Pfad, der zu ihm geführt hat, sodass Sie sehen, ob ein Treffer von dort kam, wo Sie ihn erwartet haben. Die Statistikzeile sagt, ob die Abfrage singulär ist – höchstens einen Knoten auswählen kann –, was ein JSON Pointer wäre.

Häufige Fragen

Meine Abfrage funktioniert in einem anderen Werkzeug, aber nicht hier.

Wahrscheinlich ein Unterschied durch RFC 9535. Der Standard hat Dinge entfernt, die ältere Implementierungen erlaubten: Skriptausdrücke in `()`, `$..[?(@.x)]` mit der älteren geklammerten Filtersyntax und den Vergleich mit einer Abfrage, die mehrere Knoten treffen könnte – Letzteres ist jetzt ein Syntaxfehler statt einer Vermutung.

Warum erscheint derselbe Wert zweimal?

Weil das Ergebnis eine Knotenliste ist, keine Menge. `$..price`, das denselben Knoten über zwei Zweige erreicht, führt ihn zweimal auf, mit Absicht – Deduplizieren würde die Information verlieren, woher jeder Treffer kam.

Sind die regulären Ausdrücke in `match()` standardkonform?

Nicht ganz. Der RFC spezifiziert I-Regexp, einen kleinen Dialekt; die Muster hier werden der Engine Ihres eigenen Browsers übergeben, die mehr akzeptiert. Ein Muster, das hier funktioniert, kann von einer strikten Implementierung abgelehnt werden – gut zu wissen, bevor Sie eines in Produktion nehmen.

Kann es das Dokument verändern?

Nein – JSONPath wählt aus, es schreibt nicht. Zum Bearbeiten sind die hier gezeigten Pfade RFC-6901-Pointer und können direkt in einen JSON Patch übernommen werden, den das JSON-Vergleichswerkzeug auf dieser Website erzeugt.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.