JSONPath-Tester

Fügen Sie ein JSON-Dokument ein und geben Sie einen JSONPath-Ausdruck wie $..book[?(@.price<10)] ein. Der Tester bewertet ihn gegen das Dokument und zeigt jeden passenden Wert mit dem genauen Pfad jedes Treffers an. Nützlich zur Validierung der Abfrage, die Sie in ein Skript oder eine API-Spezifikation (Postman, k6, JMeter sprechen alle JSONPath) einfügen möchten.

So testen Sie einen JSONPath-Ausdruck

  1. 1

    Fügen Sie das JSON-Dokument ein

    Jedes gültige JSON, Objekt, Array, tief verschachtelt.

  2. 2

    Geben Sie den Ausdruck ein

    Beginnen Sie mit `$` für die Wurzel. Verwenden Sie `.` für Kinder, `..` für rekursiven Abstieg, `[*]` für Wildcards.

  3. 3

    Sehen Sie die Übereinstimmungen live

    Jede Übereinstimmung wird mit ihrem Wert und dem vollständigen JSONPath angezeigt, hervorgehoben im ursprünglichen Dokument.

  4. 4

    Kopieren Sie die Ergebnisse

    Kopieren Sie Übereinstimmungen als JSON-Array oder kopieren Sie jeden einzelnen Pfad zur Verwendung in nachgelagertem Code.

JSONPath-Syntaxreferenz

Ausdruck Bedeutung
$ Wurzelelement
$.store Kind von $ mit dem Namen store
$["store"] Dasselbe, in Klammerform
$..author Alle author-Eigenschaften in beliebiger Tiefe
$.store.book[*] Jedes Buch im Geschäft
$.store.book[0] Erstes Buch
$.store.book[-1:] Letztes Buch
$.store.book[0:2] Die ersten zwei Bücher (Slicing)
$.store.book[?(@.isbn)] Bücher mit einer isbn-Eigenschaft
$.store.book[?(@.price < 10)] Bücher günstiger als 10
$.store.book[?(@.category == "fiction")] Belletristik-Bücher
$..* Jeder Wert, überall

Filterausdrücke

Filterausdrücke verwenden @, um auf den aktuellen Knoten zu verweisen. Der Tester unterstützt die gängigen Operatoren ==, !=, <, >, <=, >=, &&, || und Regex =~.

$.items[?(@.qty >= 10 && @.price < 50)]

JSONPath-Dialekte

Es gibt mehrere JSONPath-Implementierungen mit kleinen Inkompatibilitäten. Dieser Tester folgt der Goessner-Originalspezifikation und den RFC 9535-Verfeinerungen, die kompatibel sind mit:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq grundlegende Pfadausdrücke

Inkompatible Funktionen (wie Skriptausdrücke mit beliebigem JS) werden im Fehlerpanel angezeigt.

Wann JSONPath einen vollständigen Parser übertrifft

  • Testbehauptungen: Postman’s pm.expect(jsonData).to.have.jsonPath(...) benötigt einen Pfad.
  • Konfigurationsextraktion: Ziehen Sie einen Wert aus einer riesigen API-Antwort ohne eine Bibliothek.
  • Lasttest-Skripte: k6, JMeter und Gatling unterstützen alle JSONPath für Überprüfungen.
  • Kubernetes / AWS CLI: --query und --jsonpath-Flags ermöglichen es Ihnen, die Ausgabe von der Befehlszeile zu gestalten.

Häufige Fehler

  • Verwendung von . bei einem Array. $.users.0.name ist falsch; verwenden Sie $.users[0].name.
  • Vergessen von .. für Tiefe. Ein Pfad wie $.name entspricht nur dem obersten name; verwenden Sie $..name für alle.
  • Verwechslung von JSONPath mit jq. jq ist ein Superset mit Kontrollfluss und Transformationen; JSONPath dient ausschließlich der Extraktion.
  • Regex-Verankerung. =~ /foo/ entspricht Teilstrings; verwenden Sie /^foo$/ für exaktes Verhalten.

Häufig gestellte Fragen

JSONPath ist eine reine Extraktionssprache, auswählen, filtern, schneiden. jq ist eine vollständige Abfrage-/Transformationssprache mit Kontrollfluss, Variablen und Funktionen. Für einfache Extraktionen ist JSONPath portabler; für Transformationen verwenden Sie jq.

Die Goessner-Originalspezifikation plus die RFC 9535-Verfeinerungen, die mit Jayway JsonPath (Java) und jsonpath-plus (Node) übereinstimmen. Dialektspezifische Erweiterungen (Skriptausdrücke mit beliebigem Code) werden nicht unterstützt.

Ja. $..book[?(@.title =~ /^Harry.*/)] entspricht allen Büchern, deren Titel mit “Harry” beginnt. Verwenden Sie ^ und $ für das Verhalten bei vollständiger Übereinstimmung.

Ja. Sowohl das JSON als auch der JSONPath-Auswerter leben in Ihrem Browser. Ihr Dokument und Ihre Abfragen verlassen niemals den Tab.

Verwandte Tools

Tool in anderen Sprachen verfügbar