JSON Path Tester

Plak een JSON-document en typ een JSONPath-expressie zoals $..book[?(@.price<10)]. De tester beoordeelt deze expressie op het document en toont alle overeenkomstige waarden samen met de exacte paden van elk resultaat. Handig om de query die u gaat plakken in een script of een API-specificatie te valideren (Postman, k6 en JMeter ondersteunen allemaal JSONPath).

Hoe je een JSONPath-expressie testt

  1. 1

    Plak het JSON-document

    Elke geldige JSON-structuur, object, array of diep geneste structuur.

  2. 2

    Typ de uitdrukking in

    Begin met `$` voor de wortel. Gebruik `.` voor het kind, `..` voor recursieve afdaling en `[*]` voor een wildcard.

  3. 3

    Bekijk de overeenkomsten live

    Elke overeenkomst wordt weergegeven met zijn waarde en de volledige JSONPath, gemarkeerd in het originele document.

  4. 4

    Kopieer de resultaten

    Kopieer de overeenkomsten als een JSON-array of kopieer elk afzonderlijk pad voor gebruik in de volgende code.

Referentie voor de Syntax van JSONPath

Uitdrukking Betekenis
$ Hoofdelement
$.store Kind van $, genaamd store
$["store"] Hetzelfde, in haakjesvorm
$..author Alle eigenschappen van author op elke diepte
$.store.book[*] Alle boeken in de winkel
$.store.book[0] Eerste boek
$.store.book[-1:] Laatste boek
$.store.book[0:2] De eerste twee boeken (fragment)
$.store.book[?(@.isbn)] Boeken met de eigenschap isbn
$.store.book[?(@.price < 10)] Boeken voor minder dan 10
$.store.book[?(@.category == "fiction")] fictieboeken
$..* Elke waarde, overal

Filteruitdrukkingen

Filteruitdrukkingen gebruiken @ om de huidige node aan te duiden. De tester ondersteunt de gangbare operatoren ==, !=, <, >, <=, >=, &&, || en regex =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialecten van JSONPath

Er bestaan verschillende implementaties van JSONPath met geringe onverenigbaarheden. Deze tester volgt de originele specificatie van Goessner en de verbeteringen uit RFC 9535, die compatibel zijn met:

  • JaywayJsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq basispaduitdrukkingen

Onverenigbare functies (zoals scriptuitdrukkingen met willekeurige JS-code) worden in het foutpaneel gemarkeerd.

Wanneer JSONPath een volledige parser overtreft

  • Testasserties: De Postman pm.expect(jsonData).to.have.jsonPath(...) ontvangt een pad.
  • Config-extractie: haal één waarde uit een grote API-respons zonder gebruik te maken van een bibliotheek.
  • Scripten voor belastingtesten: k6, JMeter en Gatling ondersteunen allemaal JSONPath voor controles.
  • Kubernetes/AWS CLI: De --query- en --jsonpath-vlaggen geven u de mogelijkheid om de uitvoer van de commandolijn te configureren.

Veelvoorkomende fouten

  • Gebruik van . op een array. $.users.0.name is incorrect; gebruik $.users[0].name.
  • Vergeten van .. voor de diepte. Een pad als $.name past alleen bij het hoogste niveau name; gebruik $..name voor alle gevallen.
  • JSONPath verwarren met jq. jq is een superset die ook controlestromen en transformaties ondersteunt, terwijl JSONPath uitsluitend bedoeld is voor gegevensextractie.
  • Regex-verankering. =~ /foo/ past bij deelstrings; gebruik /^foo$/ voor een exacte overeenkomst.

Veelgestelde vragen

JSONPath is een pure extractietaal, selecteren, filteren en snijden. jq is een volledige query-/transformatietaal met controleflow, variabelen en functies. Voor eenvoudige extractie is JSONPath beter porteerbaar; voor transformaties gebruik je jq.

De originele Goessner-specificatie in combinatie met de verbeteringen uit RFC 9535, die overeenkomt met JaywayJsonPath (Java) en jsonpath-plus (Node). Dialectspecifieke extensies (scriptuitdrukkingen met willekeurige code) worden niet ondersteund.

Ja. $..book[?(@.title =~ /^Harry.*/)] past bij alle boeken waarvan de titel begint met “Harry”. Gebruik ^ en $ voor een volledige overeenstemming.

Ja. Zowel de JSON als de JSONPath-evaluator draaien in uw browser. Uw document en uw query’s verlaten de tab nooit.

Gerelateerde tools

Tool beschikbaar in andere talen