JSONPath-Tester

Fügen Sie ein JSON-Dokument ein und tippen Sie eine JSONPath-Abfrage. Sie erhalten die Anzahl der Treffer und zu jedem Treffer seinen normierten Pfad und seinen Wert. Die Abfrage läuft in Ihrem Browser, nichts wird gesendet.

Kostenlos Läuft in Ihrem Browser Stand: Dienstag, 10. November 2026

Der Text muss gültiges JSON sein. Das Beispiel ist das Buchladen-Dokument aus RFC 9535, Abschnitt 1.5.

Sie beginnt mit $, der Wurzel. Filter verwenden @ für den geprüften Eintrag, etwa [[email protected] < 10]. Leerzeichen am Anfang und am Ende werden ignoriert.

Ergebnis

Treffer — Die Anzahl der Knoten, die die Abfrage auswählt. Ein Knoten kann mehrfach gewählt werden, wenn die Abfrage ihn wiederholt.
Treffer in Reihenfolge

Dieses Werkzeug läuft in Ihrem Browser. Was Sie eingeben, wird nicht an uns gesendet.

So verwenden Sie es

  1. Fügen Sie das JSON-Dokument in JSON-Dokument ein. Zum Ausprobieren nutzen Sie zuerst das Beispiel.
  2. Tippen Sie die JSONPath-Abfrage in das Feld darunter, beginnend mit $. Filter stehen in Klammern: [[email protected] < 10].
  3. Lesen Sie die Anzahl unter Treffer ab und dann die Tabelle Treffer in Reihenfolge: Jede Zeile hat den Pfad eines Treffers und seinen Wert.
  4. Nennt eine Meldung die Stelle eines Problems, sehen Sie sich dieses Zeichen der Abfrage an und korrigieren Klammern, Anführungszeichen oder Punkte.

Wie eine Abfrage Knoten auswählt

Eine Abfrage ist eine Liste von Segmenten nach $. Ein Kindsegment wie .store oder [0] wählt die Kinder jedes erreichten Knotens. Ein Nachfahrensegment wie ..author besucht den Knoten und alle seine Nachfahren, bevor es auswählt. Die Knoten eines Segments stehen in der Reihenfolge der Eingabe, und ein Array wird immer in seiner Reihenfolge gelesen (RFC 9535, Abschnitte 2.5 und 2.5.2.2).

Ein Namensselektor trifft nur ein Mitglied mit genau diesem Namen und nur in einem Objekt. Ein negativer Index zählt vom Ende eines Arrays, daher ist -1 das letzte Element. Ein Slice wie [1:5:2] nimmt Start, Ende und Schritt, und ein Schritt von 0 wählt nichts aus (Abschnitt 2.3.4.2).

Filter, Funktionen und was das Werkzeug ablehnt

Ein Filter [?...] prüft jedes Kind eines Arrays oder Objekts. Vergleiche verwenden ==, !=, <, <=, > und >=; && , || und ! verbinden Prüfungen, und Klammern gruppieren sie. Ein fehlendes Mitglied ist Nothing, und zwei Nothing-Werte sind gleich. Zahlen werden mit Zahlen verglichen, Text mit Text, und ein Wert eines Typs ist nie gleich einem Wert eines anderen Typs (Abschnitt 2.3.5.2).

Die Funktionen length, count, value, match und search werden wie in RFC 9535 unterstützt. match und search nehmen einen regulären Ausdruck in I-Regexp, dem Format von RFC 9485. Ein Muster, das kein gültiges I-Regexp ist, trifft nichts. Array- und Objektliterale gehören nicht zur Grammatik, daher lehnt das Werkzeug sie ab. Es lehnt auch ein Funktionsergebnis ab, das allein in einem Filter steht, weil RFC 9535 sagt, dass dies nicht korrekt typisiert ist.

Das Buchladen-Beispiel

Mit dem Beispieldokument und der Abfrage $.store.book[[email protected] < 10].title sind die Bücher, die weniger als 10 kosten, das erste und das dritte. Ihre Titel sind die beiden Treffer unten, mit dem normierten Pfad jedes Treffers.

Normierter Pfad Wert (JSON)
$['store']['book'][0]['title'] "Sayings of the Century"
$['store']['book'][2]['title'] "Moby Dick"

Häufig gestellte Fragen

Warum liefert eine Abfrage nichts, obwohl der Schlüssel existiert?

Ein Namensselektor trifft nur ein Mitglied eines Objekts mit genau diesem Namen, und der Vergleich unterscheidet Groß- und Kleinschreibung. Er trifft nie ein Element eines Arrays, verwenden Sie für ein Array daher einen Index oder einen Platzhalter.

Warum sind 13 und "13" im Filter nicht gleich?

RFC 9535 vergleicht Werte verschiedener Typen als ungleich (Abschnitt 2.3.5.3). Eine Zahl und ein Text sind verschiedene Werte, daher ist == falsch und != wahr, auch wenn die Zeichen gleich aussehen.

Was wählt ein negativer Index aus?

Ein negativer Index zählt vom Ende des Arrays: -1 ist das letzte Element und -2 das davor. Ein Index außerhalb des Arrays wählt nichts aus und ist kein Fehler (Abschnitt 2.3.3.2).

Warum lehnt das Werkzeug length(@) ab, wenn es allein in einem Filter steht?

length liefert eine Zahl, ein Filter braucht aber eine Prüfung, die wahr oder falsch ist. Vergleichen Sie das Ergebnis, etwa in [?length(@.title) > 15], das korrekt typisiert ist.

Sendet das Werkzeug mein JSON an einen Server?

Nein. Das Dokument wird in Ihrem Browser mit JSON.parse gelesen, die Abfrage läuft ebenfalls dort, und nichts wird gespeichert. Die Seite stellt keine Netzwerkanfrage.

Quellen

Zahlen und Text zuletzt geprüft: Dienstag, 10. November 2026.

Wir verwenden notwendige Cookies, damit die Website funktioniert. Mit Ihrer Einwilligung verwendet Google außerdem Werbe-Cookies, um personalisierte Anzeigen zu zeigen. Wenn Sie diese ablehnen, sehen Sie weiterhin Anzeigen, sie werden aber nicht personalisiert.