Vad är JSONPath?

JSONPath är ett frågespråk för JSON, på samma sätt som XPath fungerar för XML. Det låter dig navigera och extrahera data från en JSON-struktur med hjälp av sökvägsuttryck. Ett JSONPath-uttryck börjar med $, som representerar dokumentets rot, och använder punktnotation (.key) eller hakparentesnotation (['key']) för att traversera objekt, och [index] för att komma åt arrayelement.

JSONPath beskrevs ursprungligen av Stefan Gössner 2007 och har sedan dess blivit en allmänt använd standard i API:er, testramverk och databelhandlingspipelines. Det stöds i många språk och verktyg, inklusive JavaScript, Python, Java och databaser som PostgreSQL och MySQL.

Verktygsöversikt

Det här verktyget låter dig klistra in ett giltigt JSON-dokument och skriva ett JSONPath-uttryck för att fråga det. Resultaten visas direkt när du skriver och visar alla matchande värden som en formaterad JSON-array. Antalet matchningar visas separat så att du snabbt kan verifiera hur många noder som valdes.

Exempel

Inmatnings-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"
      }
    ]
  }
}
Uttryck Resultat
$.store.book[*].title Alla bokstitlar
$.store.book[0] Första bokobjekt
$.store.book[?(@.price < 10)] Böcker billigare än $10
$.store.book[?(@.category == "fiction")] Endast skönlitteraturböcker
$..price Alla prisvärden var som helst i dokumentet

Funktioner

  • Realtidsutvärdering — resultaten uppdateras när du skriver uttrycket eller redigerar JSON
  • Visar antalet matchningar i ett dedikerat fält
  • Kopieringsknapp på uttrycksfältet för snabb återanvändning
  • Klistra in-knapp för att snabbt infoga JSON eller uttryck från urklipp
  • Felrapportering för ogiltig JSON eller felformade sökvägsuttryck

Hur det fungerar

JSONPath-uttryck utvärderas mot den parsade JSON med hjälp av biblioteket jsonpath-plus. Symbolen $ refererar till rotelementet. Underordnade noder nås med . eller [], jokertecken med *, rekursiv nedstigning med .. och filter med [?(...)]. Resultatet är alltid en array med matchande värden, även om endast en matchning hittas.

Alternativ förklarade

Syntax Betydelse
$ Rotelementet
.key eller ['key'] Underordnad egenskap
[*] Alla arrayelement
[0] Första arrayelement (nollindexerat)
[-1] Sista arrayelement
[0,2] Element vid index 0 och 2
[0:2] Element från index 0 till 1 (sekvens)
..key Rekursiv nedstigning — hitta key på vilket djup som helst
[?(@.price > 5)] Filter — element där price är större än 5
@ Aktuell nod (används i filteruttryck)

Användningsfall

  • API-utveckling — verifiera att en JSONPath-väljare som används i en REST-klient, testsvit eller datamappningsverktyg extraherar de förväntade fälten från ett API-svar
  • Datatransformation — identifiera vilka värden som ska extraheras från kapslade JSON-nyttolaster innan du skriver ett transformationsskript
  • Lära sig JSONPath — experimentera interaktivt med sökvägssyntax för att förstå hur operatorer som .., [*] och [?()] fungerar på verklig data

Tips

  • Använd $..* för att få varje enskilt värde i hela dokumentet — användbart för att utforska okända JSON-strukturer.
  • Filteruttryck stöder jämförelser (==, !=, <, >, <=, >=) och kan referera till kapslade egenskaper: [?(@.author.name == "Rees")].
  • För att matcha en egenskap oavsett dess djup använder du .. rekursiv nedstigning: $..title hittar alla title-fält var som helst i dokumentet.