JSONPath-testeri
Testaa JSONPath-lausekkeita omalla JSON-datallasi selaimessa. Suodattimet, viipaleet, rekursiivinen haku, polut ja JSON Pointerit sekä valmiit esimerkit.
Näin testaat JSONPath-lauseketta
- Liitä JSON kenttään JSON-data tai napsauta Lataa esimerkkidata käyttääksesi klassista kirjakauppaesimerkkiä.
- Kirjoita lauseke kenttään JSONPath-lauseke tai valitse se kohdasta Esimerkkejä.
- Tulos päivittyy kirjoittaessasi, ja Suorita kysely ajaa sen uudelleen. Tilarivi kertoo osumien määrän.
- Vaihda Näytä-valinnalla vaihtoehtojen Arvot, Polut, JSON Pointerit ja Polut ja arvot välillä ja kopioi sitten tulos.
JSONPath-syntaksi pähkinänkuoressa
| Syntaksi | Merkitys | Esimerkki |
|---|---|---|
$ |
dokumentin juuri | $ |
.name tai ['name'] |
lapsi | $.store.bicycle |
* |
jokainen lapsi | $.store.* |
.. |
rekursiivinen haku millä tahansa syvyydellä | $..author |
[n] |
taulukon indeksi alkaen nollasta | $..book[2] |
[start:end:step] |
viipale; negatiiviset luvut lasketaan lopusta | $..book[-1:] |
[a,b] |
yhdiste | $..book[0,1] |
[?(expr)] |
suodatin | $..book[?(@.price < 10)] |
^ |
jokaisen osuman vanhempi | $..book[?(@.price > 20)]^ |
~ |
arvon sijaan ominaisuuden nimi | $.store.*~ |
Tulokset palautetaan dokumentin järjestyksessä. Polut antaa normalisoidut polut, kuten $['store']['book'][0]['title'], ja JSON Pointerit antaa RFC 6901 -muodon /store/book/0/title, joka on kätevä JSON Patchia tai JSON Schema -validaattorien virhepolkuja varten.
Suodatinlausekkeet: mitä tuetaan
Suodattimet arvioidaan jsonpath-plus-kirjastolla turvallisessa tilassa: lauseke jäsennetään ja tulkitaan pienellä arvioijalla, eikä sitä koskaan välitetä eval- tai new Function -funktiolle. Merkintöjen [?( … )] sisällä voit käyttää:
@nykyiselle alkiolle,@.fieldja@['field']sen jäsenille sekä@rootkoko dokumentille ($ei ole käytettävissä suodattimen sisällä);- vertailuja
==,!=,===,!==,<,<=,>,>=; - logiikkaa
&&,||,!, aritmetiikkaa+ - * / %ja kolmioperaattoriaa ? b : c; - merkkijono-, luku-,
true-,false-,null- ja säännöllisen lausekkeen literaaleja; - itse arvojen metodeja, esimerkiksi
@.title.startsWith('S'),@.tags.includes('new')tai@.title.match(/lord/i); @property(nykyisen alkion avain tai indeksi),@parentja@path(sen normalisoitu polku) jsonpath-plus-tyyliin.
Pääsy constructor-, __proto__- ja Function-konstruktoriin on estetty. Jos suodatin epäonnistuu yhdellä alkiolla, esimerkiksi @.isbn.startsWith('0') kirjalla, jolla ei ole isbn-kenttää, kyseinen alkio ei yksinkertaisesti täsmää. Lausekkeen syntaksivirhe ilmoitetaan. RFC 9535 -tyylisesti kirjoitetut suodattimet, [?@.price < 10] ilman sulkeita, hyväksytään ja luetaan muodossa [?(@.price < 10)]. RFC 9535:n funktiot, kuten length(), count(), match() ja search(), eivät ole käytettävissä: käytä sen sijaan JavaScript-metodeja, kuten @.name.length.
Myös jsonpath-plussan tyyppivalitsimet toimivat polun lopussa: $..*@number() palauttaa jokaisen luvun, ja @string(), @boolean(), @array(), @object(), @null() ja @integer() tekevät saman muille tyypeille.
Usein kysytyt kysymykset
Lähetetäänkö JSONini palvelimelle?
Ei. Jäsennys ja arviointi tapahtuvat selaimessasi, eivätkä tietosi poistu tietokoneeltasi.
Miksi suodattimeni ei palauta mitään?
Tarkista, että suodattimen edellä oleva polku valitsee taulukon tai olion: $.store.book[?(@.price < 10)] suodattaa kirjat, kun taas $.store[?(@.price < 10)] tarkastelee kohteita book ja bicycle. Alkiosta puuttuva ominaisuus on undefined, joten vertailut sen kanssa ovat epätosia.
Mitä eroa on `==` ja `===` välillä?
Kuten JavaScriptissä, == muuntaa tyyppejä ("10" == 10 on tosi), kun taas === vertaa tyyppiä ja arvoa.
Miksi tuloste on rajattu?
Tulokseen kirjoitetaan vain 10 000 ensimmäistä osumaa, jotta sivu pysyy sulavana. Tilarivi kertoo kokonaismäärän.
Onko JSONPath standardoitu?
On, vuodesta 2024 alkaen RFC 9535:llä. Toteutukset eroavat silti toisistaan, erityisesti suodattimissa. Tämä työkalu noudattaa jsonpath-plussaa, Stefan Goessnerin alkuperäisen JSONPathin syntaksia.
Aiheeseen liittyvät työkalut
- JSON-muotoilija ja -validaattori Ilmainen JSON-muotoilija ja -validaattori, joka siistii, pienentää ja tarkistaa JSONin selaimessa ja ilmoittaa syntaksivirheet rivin ja sarakkeen kanssa.
- JSON Schema -validaattori Validoi JSON-dokumentti JSON Schemaa vastaan selaimessa. Jokainen virhe luetellaan instanssipolkuineen, avainsanoineen ja skeeman polkuineen.
- Regex-testaaja Testaa JavaScriptin säännöllisiä lausekkeita livenä: korostetut osumat, kaappausryhmät, korvaus ja selkokielinen selitys jokaisesta osasta.