Zum Hauptinhalt springen

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[*].title
All book titles
Books < $10
$.store.book[?(@.price < 10)]
Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]
Books with ISBN
All Prices
$.store..price
All 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

OperatorBeschreibungBeispiel
$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
// 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

Zusätzliche Ressourcen