JSONPath-Tester

Eingefügtes JSON mit Selektoren und einfachen Vergleichsfiltern abfragen. Zu jedem Treffer erscheinen der Wert und sein Pfad im Dokument. Nicht unterstützte Syntax wird abgelehnt; JavaScript-Ausdrücke werden nicht ausgeführt.

Läuft lokal in deinem Browser
JSON-Dokument
Abfrageausdruck

Unterstützt Namen, Klammernotation, Indizes, Platzhalter, Vereinigungen, Ausschnitte, Nachfahren-Selektoren und einfache Vergleichsfilter.

Die grundlegende Abfrageanalyse erfolgt lokal. Nicht unterstützte Ausdrucksformen liefern einen klaren Fehler, statt auf eval().

Treffer
Führen Sie einen JSONPath-Ausdruck aus, um passende Werte zu prüfen.

So führen Sie eine JSONPath-Abfrage aus

Fügen Sie ein JSON-Dokument ein, schreiben Sie einen JSONPath-Ausdruck und lesen Sie jeden Treffer als normalisierten Pfad mit seinem Wert. Die Abfrage läuft auf dem Text in diesem Tab: Es wird nichts hochgeladen und keine Anfrage verlässt die Seite.

Der Parser gehört zu diesem Werkzeug und greift nie auf eval() zurück. Syntax, die er nicht umsetzt, endet mit einer benannten Fehlermeldung: kombinierte Filter mit &&, || oder ! werden abgelehnt, ebenso ein Vergleich eines Filters mit der Dokumentwurzel.

  1. Fügen Sie das Dokument in JSON-Dokument ein oder klicken Sie auf Beispiel laden, um mit dem Buchladen-Beispiel zu starten.
  2. Schreiben Sie den Ausdruck in Abfrageausdruck. Die vier Beispiele über den Schaltflächen ($.store.book[*].author, $..price, $.store.book[?(@.price < 10)] und $.store.book[0:2]) füllen das Feld und führen sofort aus, wenn bereits ein Dokument geladen ist.
  3. Klicken Sie auf Abfrage ausführen. Die Karte Treffer listet einen Eintrag pro Knoten: links der normalisierte Pfad, rechts der JSON-Wert.
  4. Mit Ergebnis-JSON kopieren übernehmen Sie die Treffer als ein JSON-Array, mit Leeren entfällt das Dokument und die Ergebnisliste kehrt in den Ausgangszustand zurück.

Was dieser JSONPath-Tester unterstützt

Selektoren, die funktionieren

Namen, Namen in Klammern und Indizes: $.store.book, $["store"]["book"], $['store']['bicycle'], [0], [-1] für das letzte Element und Vereinigungen wie [0,1] oder ['a','b']. Ein Name ohne Klammern beginnt mit Buchstabe, Unterstrich oder $ und fährt mit Buchstaben, Ziffern, Unterstrich, $ oder Bindestrich fort; ein Schlüssel mit Punkt oder Leerzeichen braucht die Klammerform.

Platzhalter, Ausschnitte und Nachfahren: $.store.*, $..price, [0:2], [::2], [::-1]. Ausschnitte folgen denselben Grenzen wie in Python: eine negative Grenze zählt vom Ende, ein negativer Schritt läuft rückwärts.

Filter: ein Vergleich pro Klammer

Ein Filter prüft genau einen Vergleich und akzeptiert ==, !=, <, <=, > und >= gegen eine Zahl, eine Zeichenkette in Anführungszeichen, true, false oder null: [?(@.price < 10)] oder [?(@.title == "Moby Dick")]. Ein Filter ohne Operator behält die Knoten, in denen die Eigenschaft vorhanden und wahr ist: [?(@.isbn)].

Was der Parser nicht auswerten kann, wird abgelehnt statt geraten: [?(@.price > 1 && @.price < 10)] meldet, dass kombinierte Filter nicht unterstützt werden, [?(@.price > $.expensive)], dass ein Filter nicht mit der Wurzel verglichen werden kann, und ein regulärer Ausdruck wie =~ /a/, dass der Filterausdruck nicht unterstützt wird.

Pfade, Kopie und große Eingaben

Jeder Treffer nennt seinen Pfad in einer einheitlichen Form, $["store"]["book"][0]["author"], unabhängig von der Schreibweise der Abfrage, und derselbe Knoten erscheint nie zweimal. Ergebnis-JSON kopieren liefert die Treffer als ein JSON-Array, bereit für ein Fixture oder einen Diff.

Die Karte Treffer zeigt die ersten 200 Ergebnisse und nennt die Anzahl der übrigen; die Schaltfläche zum Kopieren liefert weiterhin das vollständige Array. Ein Dokument mit 50.000 Knoten beantwortet eine Platzhalterabfrage in unter einer Sekunde, und tief verschachtelte Dokumente werden ohne Stapelüberlauf durchlaufen.

Zuletzt verwendet: