JSONPath-testare

Klistra in ett JSON-dokument och skriv ett JSONPath-uttryck som $..book[?(@.price<10)]. Testaren utvärderar det mot dokumentet och visar varje matchande värde, med den exakta sökvägen för varje matchning. Användbart för att validera frågan du tänker klistra in i ett skript eller en API-specifikation (Postman, k6, JMeter talar alla JSONPath).

Så testar du ett JSONPath-uttryck

  1. 1

    Klistra in JSON-dokumentet

    Valfri giltig JSON: objekt, array, djupt nästlad.

  2. 2

    Skriv uttrycket

    Börja med `$` för rot. Använd `.` för barn, `..` för rekursivt nedstigande, `[*]` för jokertecken.

  3. 3

    Se matchningarna i realtid

    Varje matchning visas med sitt värde och fullständig JSONPath, markerad i originaldokumentet.

  4. 4

    Kopiera resultaten

    Kopiera matchningar som en JSON-array, eller kopiera varje enskild sökväg för användning i nedströmskod.

JSONPath-syntaxreferens

Uttryck Betydelse
$ Rotelement
$.store Barn till $ med namnet store
$["store"] Samma, hakparentesform
$..author Alla author-egenskaper på valfritt djup
$.store.book[*] Varje bok i butiken
$.store.book[0] Första boken
$.store.book[-1:] Sista boken
$.store.book[0:2] Första två böckerna (slice)
$.store.book[?(@.isbn)] Böcker med en isbn-egenskap
$.store.book[?(@.price < 10)] Böcker billigare än 10
$.store.book[?(@.category == "fiction")] Skönlitterära böcker
$..* Varje värde, överallt

Filteruttryck

Filteruttryck använder @ för att referera till den aktuella noden. Testaren stöder de vanliga operatorerna ==, !=, <, >, <=, >=, &&, || och regex =~.

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

JSONPath-dialekter

Det finns flera JSONPath-implementeringar med små inkompatibiliteter. Den här testaren följer Goessners ursprungliga specifikation och RFC 9535-förfiningarna, som är kompatibla med:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq grundläggande sökvägsuttryck

Inkompatibla funktioner (som skriptuttryck med godtycklig JS) flaggas i felpanelen.

När JSONPath slår en fullständig tolkare

  • Testassertioner: Postmans pm.expect(jsonData).to.have.jsonPath(...) tar en sökväg.
  • Konfigurationsextrahering: dra ut ett värde ur ett enormt API-svar utan ett bibliotek.
  • Lasttestningsskript: k6, JMeter och Gatling stöder alla JSONPath för kontroller.
  • Kubernetes / AWS CLI: flaggorna --query och --jsonpath låter dig forma utdata från kommandoraden.

Vanliga misstag

  • Att använda . på en array. $.users.0.name är fel; använd $.users[0].name.
  • Att glömma .. för djup. En sökväg som $.name matchar bara name på toppnivå; använd $..name för alla.
  • Att förväxla JSONPath med jq. jq är en övermängd med kontrollflöde och transformationer; JSONPath är rent för extrahering.
  • Regexförankring. =~ /foo/ matchar delsträngar; använd /^foo$/ för exakt.

Vanliga frågor

JSONPath är ett rent extraheringsspråk, välj, filtrera, slice. jq är ett fullständigt fråge-/transformeringsspråk med kontrollflöde, variabler och funktioner. För enkel extrahering är JSONPath mer portabelt; för transformationer, använd jq.

Goessners ursprungliga specifikation plus RFC 9535-förfiningarna, matchande Jayway JsonPath (Java) och jsonpath-plus (Node). Dialektspecifika tillägg (skriptuttryck med godtycklig kod) stöds inte.

Ja. $..book[?(@.title =~ /^Harry.*/)] matchar alla böcker vars titel börjar med “Harry”. Använd ^ och $ för helmatchningsbeteende.

Ja. Både JSON:en och JSONPath-utvärderaren bor i din webbläsare. Ditt dokument och dina frågor lämnar aldrig fliken.

Relaterade verktyg

Verktyget finns på andra språk