Hva er JSONPath?

JSONPath er et spørrespråk for JSON, på samme måte som XPath fungerer for XML. Det lar deg navigere og hente ut data fra en JSON-struktur ved hjelp av stieruttrykk. Et JSONPath-uttrykk starter med $, som representerer roten av dokumentet, og bruker punktnotasjon (.key) eller hakeparentesnotasjon (['key']) for å traversere objekter, og [index] for å få tilgang til matriseelementer.

JSONPath ble opprinnelig beskrevet av Stefan Gössner i 2007 og har siden blitt en mye brukt standard i APIer, testingsrammeverk og dataprosesseringspipelines. Det støttes i mange språk og verktøy, inkludert JavaScript, Python, Java, og databaser som PostgreSQL og MySQL.

Verktøybeskrivelse

Dette verktøyet lar deg lime inn et hvilket som helst gyldig JSON-dokument og skrive et JSONPath-uttrykk for å spørre det. Resultater vises øyeblikkelig mens du skriver, og viser alle samsvarende verdier som en formatert JSON-matrise. Antallet treff vises separat slik at du raskt kan kontrollere hvor mange noder som ble valgt.

Eksempler

Inndata-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"
      }
    ]
  }
}
Uttrykk Resultat
$.store.book[*].title Alle boktitler
$.store.book[0] Første bokobjekt
$.store.book[?(@.price < 10)] Bøker billigere enn $10
$.store.book[?(@.category == "fiction")] Kun skjønnlitteraturbøker
$..price Alle prisverdier hvor som helst i dokumentet

Funksjoner

  • Evaluering i sanntid — resultater oppdateres mens du skriver uttrykket eller redigerer JSON
  • Viser antallet treff i et dedikert felt
  • Kopieringsknapp på uttrykksfeltet for rask gjenbruk
  • Limeknapp for raskt å sette inn JSON eller uttrykk fra utklippstavlen
  • Feilrapportering for ugyldig JSON eller malformerte stieruttrykk

Hvordan det fungerer

JSONPath-uttrykk evalueres mot den analyserte JSON ved hjelp av jsonpath-plus-biblioteket. $-symbolet refererer til rotelementet. Undernoder får tilgang med . eller [], jokertegn med *, rekursiv nedstigning med .., og filtre med [?(...)]. Resultatet er alltid en matrise med samsvarende verdier, selv om bare ett treff blir funnet.

Alternativer forklart

Syntaks Betydning
$ Rotelement
.key eller ['key'] Underordnet egenskap
[*] Alle matriseelementer
[0] Første matriseelement (nullindeksert)
[-1] Siste matriseelement
[0,2] Elementer ved indeks 0 og 2
[0:2] Elementer fra indeks 0 til 1 (slice)
..key Rekursiv nedstigning — finn key på hvilken som helst dybde
[?(@.price > 5)] Filter — elementer der price er større enn 5
@ Gjeldende node (brukt inne i filteruttrykk)

Brukstilfeller

  • API-utvikling — verifiser at en JSONPath-velger som brukes i en REST-klient, testpakke eller datakartleggingsverktøy henter de forventede feltene fra et API-svar
  • Datatransformasjon — identifiser hvilke verdier som skal hentes fra nestede JSON-nyttelaster før du skriver et transformasjonsskript
  • Lær JSONPath — eksperimenter med stiyntaks interaktivt for å forstå hvordan operatorer som .., [*] og [?()] oppfører seg på virkelige data

Tips

  • Bruk $..* for å få hver eneste verdi i hele dokumentet — nyttig for å utforske ukjente JSON-strukturer.
  • Filteruttrykk støtter sammenligninger (==, !=, <, >, <=, >=) og kan referere til nestede egenskaper: [?(@.author.name == "Rees")].
  • For å samsvare en egenskap uavhengig av dens dybde, bruk .. rekursiv nedstigning: $..title finner alle title-felt hvor som helst i dokumentet.