Wat is JSONPath?

JSONPath is een querytaal voor JSON, vergelijkbaar met hoe XPath werkt voor XML. Hiermee kunt u navigeren en gegevens uit een JSON-structuur extraheren met behulp van padexpressies. Een JSONPath-expressie begint met $, die de root van het document vertegenwoordigt, en gebruikt puntnotatie (.key) of haakjesnotatie (['key']) om objecten te doorlopen, en [index] om toegang te krijgen tot arrayelementen.

JSONPath werd oorspronkelijk in 2007 door Stefan Gössner beschreven en is sindsdien een veel gebruikte standaard geworden in API's, testframeworks en gegevensverwerkingspijplijnen. Het wordt ondersteund in veel talen en tools, waaronder JavaScript, Python, Java en databases zoals PostgreSQL en MySQL.

Hulpprogrammabeschrijving

Met dit hulpprogramma kunt u elk geldig JSON-document plakken en een JSONPath-expressie schrijven om het op te vragen. Resultaten worden direct weergegeven terwijl u typt, met alle overeenkomende waarden als een opgemaakt JSON-array. Het aantal overeenkomsten wordt afzonderlijk weergegeven, zodat u snel kunt verifiëren hoeveel knooppunten zijn geselecteerd.

Voorbeelden

Invoer JSON:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
Expressie Resultaat
$.store.book[*].title Alle boektitels
$.store.book[0] Eerste boekobject
$.store.book[?(@.price < 10)] Boeken goedkoper dan $10
$.store.book[?(@.category == "fiction")] Alleen fictiewerken
$..price Alle prijswaarden overal in het document

Functies

  • Evaluatie in realtime — resultaten worden bijgewerkt terwijl u de expressie typt of de JSON bewerkt
  • Geeft het aantal overeenkomsten weer in een speciaal veld
  • Kopieerknop op het expressieveldje voor snel hergebruik
  • Plakknop voor snel invoegen van JSON of expressies vanuit het klembord
  • Foutrapportage voor ongeldige JSON of onjuist gevormde padexpressies

Hoe het werkt

JSONPath-expressies worden geëvalueerd tegen de geparste JSON met behulp van de jsonpath-plus-bibliotheek. Het $-symbool verwijst naar het rootelement. Onderliggende knooppunten worden benaderd met . of [], jokertekens met *, recursieve afstamming met .., en filters met [?(...)]. Het resultaat is altijd een array van overeenkomende waarden, zelfs als slechts één overeenkomst wordt gevonden.

Opties uitgelegd

Syntaxis Betekenis
$ Rootelement
.key of ['key'] Onderliggende eigenschap
[*] Alle arrayelementen
[0] Eerste arrayelement (nul-geïndexeerd)
[-1] Laatste arrayelement
[0,2] Elementen op index 0 en 2
[0:2] Elementen van index 0 tot 1 (slice)
..key Recursieve afstamming — zoek key op elke diepte
[?(@.price > 5)] Filter — elementen waarbij price groter is dan 5
@ Huidiig knooppunt (gebruikt in filterexpressies)

Gebruiksscenario's

  • API-ontwikkeling — controleer of een JSONPath-selector die in een REST-client, testpakket of gegevenstoewijzingstool wordt gebruikt, de verwachte velden uit een API-respons extraheert
  • Gegevenstransformatie — bepaal welke waarden u uit geneste JSON-payloads wilt extraheren voordat u een transformatiescript schrijft
  • JSONPath leren — experimenteer interactief met padsyntaxis om te begrijpen hoe operatoren zoals .., [*] en [?()] zich gedragen op echte gegevens

Tips

  • Gebruik $..* om elke waarde in het hele document op te halen — handig voor het verkennen van onbekende JSON-structuren.
  • Filterexpressies ondersteunen vergelijkingen (==, !=, <, >, <=, >=) en kunnen verwijzen naar geneste eigenschappen: [?(@.author.name == "Rees")].
  • Als u een eigenschap ongeacht de diepte wilt matchen, gebruikt u .. recursieve afstamming: $..title vindt alle title-velden overal in het document.