RFC-9535-JSONPath-Abfragen auf eingefügtem JSON ausführen und jeden Treffer markiert sehen
Läuft in Ihrem Browser. Nichts, was Sie eingeben, wird irgendwohin gesendet.JSONPath holt Werte mit einem kurzen Ausdruck aus JSON. $.store.book[*].author liefert jeden Autor, $..price jeden Preis in beliebiger Tiefe und $..book[[email protected] < 10] nur die Bücher unter 10. Dieser Tester folgt RFC 9535, dem Standard von 2024, und markiert jeden Treffer im formatierten JSON.
Diese Seite wurde maschinell aus dem englischen Original übersetzt. Die Übersetzung wurde noch von keinem Menschen geprüft; maßgeblich ist die englische Fassung. Englisches Original lesen
Fügen Sie JSON in den Bereich JSON ein oder klicken Sie auf Beispiel laden.
Geben Sie eine Abfrage in das Feld JSONPath ein oder wählen Sie eine unter Beispiele.
Sehen Sie die Treffer im Tab Markiert, oder öffnen Sie Ergebnisse für jeden Pfad und Wert.
Klicken Sie auf Werte kopieren, um die Treffer als JSON-Array zu erhalten, oder auf Pfade kopieren.
Dieser JSONPath-Tester führt eine Abfrage auf dem eingefügten JSON aus und zeigt das Ergebnis auf drei Arten: eine Liste der passenden Werte, den normalisierten Pfad zu jedem Treffer und Markierungen der Treffer im formatierten Dokument. Das Ergebnis aktualisiert sich beim Tippen, sodass Sie einen Ausdruck Schritt für Schritt aufbauen und sehen können, wo er danebenliegt.
Die Engine implementiert RFC 9535, den 2024 von der IETF veröffentlichten JSONPath-Standard. Sie unterstützt die Wurzel $, Kindzugriff per Punkt und Klammern, den rekursiven Abstiegsoperator .., Platzhalter, Array-Indizes einschließlich negativer, Slices wie [1:5:2] und [::-1] sowie Filterausdrücke mit ==, !=, <, <=, >, >=, &&, || und !. Die fünf Standardfunktionen sind enthalten: length(), count(), value(), match() und search(), wobei die letzten beiden reguläre Ausdrücke in der Form I-Regexp annehmen. Abfragen, die gegen die Typregeln des Standards verstoßen, etwa der Vergleich einer Abfrage, die mehrere Knoten liefern kann, werden mit einer Begründung abgelehnt.
Viele ältere Bibliotheken, darunter das ursprüngliche JSONPath von 2007 und Jayway für Java, weichen in Kleinigkeiten vom Standard ab: Manche verlangen Klammern um Filter wie in [?(@.price < 10)], was hier weiterhin funktioniert; andere erlauben Skriptausdrücke oder zusätzliche Funktionen, die RFC 9535 nicht vorsieht. Wird eine Abfrage aus der Dokumentation einer Bibliothek abgelehnt, nennt die Meldung meist den Unterschied.
Ungültiges JSON wird mit Zeile und Spalte des ersten Problems gemeldet. Zahlen werden als JavaScript-Zahlen gelesen, Ganzzahlen über 2^53 verlieren also an Genauigkeit, und ein wiederholter Schlüssel behält seinen letzten Wert.
Was er nicht kann: JMESPath- oder jq-Syntax, JSON bearbeiten oder eine URL abrufen. Alles läuft in Ihrem Browser. Verwandte Werkzeuge: JSON Formatter, JSON Diff, JSON to TypeScript.
Verwenden Sie einen Filterselektor: $.items[[email protected] == 'active'] behält die Elemente, deren status active ist. Das @ steht der Reihe nach für jedes Element. Verknüpfen Sie Bedingungen mit && und ||, vergleichen Sie Zahlen mit < und >, und schreiben Sie [email protected] allein, um Elemente zu behalten, die überhaupt ein Feld email haben.
Ein einzelner Punkt nimmt ein Kind des aktuellen Knotens, $.store.book liest also eine Ebene nach der anderen. Zwei Punkte suchen in jeder Tiefe, $..price findet also jedes Feld price im ganzen Dokument, auch in Arrays. Rekursiver Abstieg ist bequem, kann bei großen Antworten aber mehr treffen als beabsichtigt.
RFC 9535, im Februar 2024 von der IETF veröffentlicht, der erste formale JSONPath-Standard. Abfragen für ältere Bibliotheken funktionieren meist, auch Filter in ?( ), aber Skriptausdrücke und bibliotheksspezifische Funktionen gehören nicht zum Standard und werden mit einer Erklärung abgelehnt.
Mit einem negativen Index: $.items[-1] ist das letzte Element und $.items[-2] das davor. Auch ein Slice mit negativem Anfang funktioniert, $.items[-3:] liefert also die letzten drei. Indizes hinter dem Ende liefern einfach nichts statt eines Fehlers.
Ein normalisierter Pfad ist die eine genaue Stelle eines Treffers, in einer festen, von RFC 9535 definierten Form geschrieben, etwa $['store']['book'][0]['title']. Jedes Ergebnis zeigt seinen normalisierten Pfad, was nützlich ist, um in einem Fehlerbericht oder einer Testzusicherung auf einen Wert zu verweisen.
Ja, mit match() und search(). match(@.code, 'A[0-9]+') verlangt, dass die ganze Zeichenkette zum Muster passt, während search(@.name, 'smith') es irgendwo findet. Muster verwenden I-Regexp, eine portable Teilmenge regulärer Ausdrücke, Kürzel wie \d und Lookaheads werden daher nicht akzeptiert.
Kommen Sie nicht weiter? Fragen Sie zu JSONPath-Tester und jeder, der es weiß, kann antworten. Kein Konto nötig.