Mikä on JSONPath?

JSONPath on kyselykieli JSON-muodolle, samankaltainen kuin XPath XML:lle. Sen avulla voit navigoida ja poimia tietoja JSON-rakenteesta polkulausekkeilla. JSONPath-lauseke alkaa $-merkillä, joka edustaa dokumentin juurta, ja käyttää piste-notaatiota (.key) tai hakasulkunotaatiota (['key']) objektien läpikäyntiin sekä [index]-merkintää taulukon elementtien käyttöön.

JSONPath kuvaili alun perin Stefan Gössner vuonna 2007, ja siitä on sittemmin tullut laajalti käytetty standardi API:issa, testausympäristöissä ja tietojen käsittelyputkissa. Sitä tuetaan monissa ohjelmointikielissä ja työkaluissa, kuten JavaScript, Python, Java ja tietokannoissa kuten PostgreSQL ja MySQL.

Työkalun kuvaus

Tämän työkalun avulla voit liittää minkä tahansa kelvollisen JSON-dokumentin ja kirjoittaa JSONPath-lausekkeen sen kyselyyn. Tulokset näytetään välittömästi kirjoitettaessa, ja kaikki vastaavat arvot näkyvät muotoiltuna JSON-taulukkona. Osumien määrä näytetään erikseen, jotta voit nopeasti varmistaa, kuinka monta solmua valittiin.

Esimerkit

Syöte 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"
      }
    ]
  }
}
Lauseke Tulos
$.store.book[*].title Kaikki kirjojen otsikot
$.store.book[0] Ensimmäinen kirjaobjekti
$.store.book[?(@.price < 10)] Kirjat, joiden hinta on alle 10 dollaria
$.store.book[?(@.category == "fiction")] Vain fiktiokirjat
$..price Kaikki hintaarvot dokumentissa

Ominaisuudet

  • Reaaliaikainen arviointi — tulokset päivittyvät kirjoitettaessa lauseketta tai muokattaessa JSON-tietoa
  • Osumien määrä näytetään omassa kentässä
  • Kopiointipainike lausekekentässä nopeaa uudelleenkäyttöä varten
  • Liitä-painike JSON:n tai lausekkeiden nopeaa liittämistä varten leikepöydältä
  • Virheraportointi virheelliselle JSON:lle tai väärin muodostetuille polkulausekkeille

Kuinka se toimii

JSONPath-lausekkeet arvioidaan jäsennettyä JSON-tietoa vastaan jsonpath-plus-kirjaston avulla. $-symboli viittaa juurielementtiin. Alielementit käytetään . tai [] merkinnöillä, jokerit * merkinnöllä, rekursiivinen laskeutuminen .. merkinnöllä ja suodattimet [?(...)] merkinnöllä. Tulos on aina taulukko vastaavista arvoista, vaikka vain yksi osuma löytyisi.

Vaihtoehdot selitettynä

Syntaksi Merkitys
$ Juurielementti
.key tai ['key'] Aliobjektin ominaisuus
[*] Kaikki taulukon elementit
[0] Ensimmäinen taulukon elementti (nolla-indeksoitu)
[-1] Viimeinen taulukon elementti
[0,2] Elementit indekseissä 0 ja 2
[0:2] Elementit indeksistä 0 indeksiin 1 (siivu)
..key Rekursiivinen laskeutuminen — etsi key mistä tahansa syvyydestä
[?(@.price > 5)] Suodatin — elementit, joissa price on suurempi kuin 5
@ Nykyinen solmu (käytetään suodatinlausekkeissa)

Käyttötapaukset

  • API-kehitys — varmista, että REST-asiakkaassa, testisarjassa tai tietojen yhdistämistyökalussa käytetty JSONPath-valitsin poimii API-vastauksesta odotettavat kentät
  • Tietojen muunnos — tunnista, mitkä arvot poimitaan sisäkkäisistä JSON-kuormista ennen muunnosskriptin kirjoittamista
  • JSONPathin oppiminen — kokeile polkusyntaksia interaktiivisesti ymmärtääksesi, kuinka operaattorit kuten .., [*] ja [?()] toimivat todellisilla tiedoilla

Vinkkejä

  • Käytä $..* saadaksesi jokaisen arvon koko dokumentista — hyödyllinen tuntemattomien JSON-rakenteiden tutkimiseen.
  • Suodatinlausekkeissa tuetaan vertailuja (==, !=, <, >, <=, >=) ja ne voivat viitata sisäkkäisiin ominaisuuksiin: [?(@.author.name == "Rees")].
  • Jotta ominaisuus vastaisi sen syvyydestä riippumatta, käytä .. rekursiivista laskeutumista: $..title löytää kaikki title-kentät dokumentissa mistä tahansa.