Was ist JSONPath?
JSONPath ist eine Abfragesprache für JSON, analog zu XPath für XML. Ein JSONPath-Ausdruck navigiert durch ein JSON-Dokument und gibt einen oder mehrere Werte zurück, die dem angegebenen Pfad entsprechen. Die Wurzel eines Dokuments wird durch $ dargestellt, Objektschlüssel werden mit Punkt-Notation ($.user.name) oder Klammer-Notation aufgerufen.
JSONPath wird in Konfigurationssystemen, API-Gateways, Test-Frameworks und Datentransformations-Pipelines weit verbreitet eingesetzt. AWS EventBridge verwendet JSONPath zum Filtern von Events; Kubernetes verwendet es zum Abgleichen von Objekten.
Die Sprache unterstützt mehrere leistungsstarke Operatoren: der rekursive Abstiegsoperator (..) sucht auf allen Ebenen nach einem Schlüssel, Filterausdrücke (?(...)) wählen Elemente aus, die eine Bedingung erfüllen.
Häufige JSONPath-Muster
Punkt- und Klammer-Notation: $.store.book[0].title ruft den Titel des ersten Buches ab. Klammer-Notation ist erforderlich, wenn ein Schlüssel Sonderzeichen enthält.
Wildcards und Slices: $.store.book[*].author gibt alle Autoren zurück. $.store.book[-1:] gibt nur das letzte Element zurück. $.store.book[0:3] gibt die ersten drei Elemente zurück.
Rekursiver Abstieg und Filter: $..price gibt jeden Preiswert auf beliebiger Verschachtelungsebene zurück. $.store.book[?(@.price < 10)] gibt alle Bücher mit einem Preis unter 10 zurück.
JSONPath vs. JMESPath vs. jq
JSONPath (standardisiert in RFC 9535) ist die am weitesten verbreitete JSON-Abfragenotation und wird in vielen Sprachen und Plattformen nativ unterstützt.
JMESPath wird von AWS CLI und SDKs verwendet. Es hat eine formellere Grammatik und unterstützt eingebaute Funktionen (sort_by, keys, values, length, contains).
jq ist ein Befehlszeilen-JSON-Prozessor mit einer eigenen Mini-Sprache, die deutlich leistungsfähiger ist, aber eine steilere Lernkurve hat. Unser JSONPath-Tool konzentriert sich auf den RFC 9535-Standard.