JSON Path Tester
Ein Tool zum Testen von JSONPath-Ausdrücken und Extrahieren gewünschter Werte aus JSON-Daten. Ein unverzichtbares Tool für API-Response-Parsing und Datenanalyse!
Result will appear here...
Common Patterns
Root
$Root object
All Books
$.store.book[*]All books in store
First Book
$.store.book[0]First book
Last Book
$.store.book[-1]Last book
Book Titles
$.store.book[*].titleAll book titles
Books < $10
$.store.book[?(@.price < 10)]Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]Books with ISBN
All Prices
$.store..priceAll prices (recursive)
Syntax Guide:
$- Root object@- Current object.or[]- Child operator..- Recursive descent*- Wildcard[start:end]- Array slice[?(<expr>)]- Filter expression
Was ist JSONPath?
JSONPath ist eine Ausdruckssprache zum Abfragen von Werten in JSON-Datenstrukturen. Genau wie XPath für XML ermöglicht JSONPath das Extrahieren spezifischer Daten aus JSON.
Hauptsyntax
Grundlegende Operatoren
| Operator | Beschreibung | Beispiel |
|---|---|---|
$ | Wurzelobjekt | $ |
@ | Aktuelles Objekt (innerhalb Filter) | @.price |
. oder [] | Kindelement | $.store.book |
.. | Rekursive Suche | $..price |
* | Platzhalter | $.store.* |
[n] | Array-Index | $.store.book[0] |
[start:end] | Array-Slice | $.store.book[0:2] |
[?(<expr>)] | Filterausdruck | $..book[?(@.price < 10)] |
Array-Indexierung
// Erstes Element
$.store.book[0]
// Letztes Element
$.store.book[-1]
// Bereich (von 0 bis vor Index 2)
$.store.book[0:2]
// Alle Elemente
$.store.book[*]
Filterausdrücke
// Bücher mit Preis unter 10
$.store.book[?(@.price < 10)]
// Bücher, die eine ISBN haben
$.store.book[?(@.isbn)]
// Bücher der Kategorie Fiction
$.store.book[?(@.category === 'fiction')]
// Bücher mit bestimmtem Wort im Titel
$.store.book[?(@.title.includes('Moby'))]
Praktische Beispiele
Datenextraktion aus API-Response
// API-Response
{
"users": [
{ "id": 1, "name": "John", "active": true },
{ "id": 2, "name": "Jane", "active": false },
{ "id": 3, "name": "Bob", "active": true }
]
}
// Nur aktive Benutzer extrahieren
$.users[?(@.active === true)]
// Alle Benutzernamen
$.users[*].name
Navigation in verschachtelten Daten
// Komplexes JSON
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{ "name": "Alice", "salary": 100000 },
{ "name": "Bob", "salary": 90000 }
]
},
{
"name": "Sales",
"employees": [
{ "name": "Charlie", "salary": 80000 }
]
}
]
}
}
// Alle Mitarbeitergehälter
$..employees[*].salary
// Mitarbeiter mit Gehalt >= 90000
$..employees[?(@.salary >= 90000)]
Verarbeitung von Array-Daten
// E-Commerce-Daten
{
"products": [
{ "name": "Laptop", "price": 1000, "stock": 5 },
{ "name": "Mouse", "price": 20, "stock": 0 },
{ "name": "Keyboard", "price": 50, "stock": 10 }
]
}
// Produkte auf Lager
$.products[?(@.stock > 0)]
// Preisspanne (20 ~ 100)
$.products[?(@.price >= 20 && @.price <= 100)]
Anwendungsfälle
1. API-Tests und Debugging
// Fehlermeldungen aus GraphQL-Response extrahieren
$.errors[*].message
// REST API Paginierungsdaten
$.data.items[*]
2. Datenanalyse
// Daten nach spezifischen Bedingungen filtern
$..transactions[?(@.amount > 1000)]
// Statistische Daten sammeln
$..metrics[*].value
3. Konfigurationsdatei-Parsing
// Spezifische Umgebungskonfiguration extrahieren
$.environments[?(@.name === 'production')]
// Aktivierte Feature-Flags
$.features[?(@.enabled === true)].name
4. Log-Analyse
// Nur Fehlerprotokolle filtern
$.logs[?(@.level === 'error')]
// Protokolle in bestimmtem Zeitbereich
$.logs[?(@.timestamp > 1234567890)]
Vergleichsoperatoren
In JSONPath-Filtern verfügbare Operatoren:
===- Gleich!==- Ungleich<- Kleiner als<=- Kleiner oder gleich>- Größer als>=- Größer oder gleich&&- UND||- ODER
Verwendungstipps
1. Schrittweises Testen
Teste komplexe Pfade schrittweise:
// Schritt 1: $.store
// Schritt 2: $.store.book
// Schritt 3: $.store.book[*]
// Schritt 4: $.store.book[*].title
2. Rekursive Suche verwenden
Verwende .. wenn die Struktur unbekannt ist:
// Alle Price-Felder finden
$..price
3. Filter kombinieren
Kombiniere mehrere Bedingungen:
$..book[?(@.price < 10 && @.category === 'fiction')]
Wichtige Hinweise
- JSONPath-Ausdrücke sind case-sensitiv
- Verwende
@zum Referenzieren des aktuellen Objekts in Filterausdrücken - Array-Slicing funktioniert ähnlich wie Python (Start inklusiv, Ende exklusiv)
- Die Syntax kann zwischen verschiedenen Implementierungen leicht variieren
Verwandte Tools
- JSON Formatter - JSON-Formatierung
- API Tester - API-Tests
- Regex Tester - Reguläre Ausdrücke testen
Zusätzliche Ressourcen
- JSONPath Offizielle Dokumentation
- JSONPath Plus - Verwendete Bibliothek