JSONPathi testija
Testi JSONPath-avaldisi oma JSON-il brauseris. Filtrid, lõigud, rekursiivne laskumine, teed ja JSON Pointerid koos valmis näidetega.
Kuidas JSONPath-avaldist testida
- Kleebi oma JSON väljale JSON-andmed või klõpsa Laadi näidisandmed, et kasutada klassikalist raamatupoe näidet.
- Kirjuta avaldis väljale JSONPath-avaldis või vali see jaotisest Näited.
- Tulemus uueneb kirjutamise ajal; Käivita päring käivitab selle uuesti. Olekurida annab vastete arvu.
- Kasuta valikut Näita, et vahetada Väärtused, Teed, JSON Pointerid ja Teed ja väärtused vahel, seejärel kopeeri tulemus.
JSONPathi süntaks lühidalt
| Süntaks | Tähendus | Näide |
|---|---|---|
$ |
dokumendi juur | $ |
.name või ['name'] |
alamelement | $.store.bicycle |
* |
iga alamelement | $.store.* |
.. |
rekursiivne laskumine mis tahes sügavusel | $..author |
[n] |
massiivi indeks alates 0-st | $..book[2] |
[start:end:step] |
lõik; negatiivsed arvud loevad lõpust | $..book[-1:] |
[a,b] |
ühend | $..book[0,1] |
[?(expr)] |
filter | $..book[?(@.price < 10)] |
^ |
iga vaste vanem | $..book[?(@.price > 20)]^ |
~ |
väärtuse asemel omaduse nimi | $.store.*~ |
Tulemused tagastatakse dokumendi järjekorras. Teed annab normaliseeritud teed nagu $['store']['book'][0]['title'] ja JSON Pointerid annab RFC 6901 kuju /store/book/0/title, mis on käepärane JSON Patchi või JSON Schema valideerijate veateede jaoks.
Filtriavaldised: mida toetatakse
Filtreid hinnatakse jsonpath-plusiga turvarežiimis: avaldise parsib ja tõlgendab väike hindaja, seda ei anta kunagi eval-ile ega new Function-ile. Sees [?( … )] saad kasutada:
@praeguse elemendi jaoks,@.fieldja@['field']selle liikmete jaoks,@rootkogu dokumendi jaoks ($ei ole filtri sees saadaval);- võrdlusi
==,!=,===,!==,<,<=,>,>=; - loogikat
&&,||,!, aritmeetikat+ - * / %ja kolmekohalist operaatorita ? b : c; - stringi, arvu,
true,false,nullja regulaaravaldise literaale; - väärtuste enda meetodeid, näiteks
@.title.startsWith('S'),@.tags.includes('new')või@.title.match(/lord/i); @property(praeguse elemendi võti või indeks),@parentja@path(selle normaliseeritud tee) jsonpath-plusi stiilis.
Juurdepääs constructor, __proto__ ja Function konstruktorile on blokeeritud. Kui filter ebaõnnestub ühel elemendil, näiteks @.isbn.startsWith('0') raamatul ilma isbn-ita, siis see element lihtsalt ei sobi; avaldise süntaksiviga teatatakse. RFC 9535 viisil kirjutatud filtrid, [?@.price < 10] ilma sulgudeta, aktsepteeritakse ja loetakse kujul [?(@.price < 10)]. RFC 9535 funktsioonid nagu length(), count(), match() ja search() ei ole saadaval: kasuta selle asemel JavaScripti meetodeid, näiteks @.name.length.
Jsonpath-plusi tüübivalijad töötavad ka tee lõpus: $..*@number() tagastab iga arvu ning @string(), @boolean(), @array(), @object(), @null() ja @integer() teevad sama muude tüüpide jaoks.
Korduma kippuvad küsimused
Kas minu JSON saadetakse serverisse?
Ei. Analüüs ja hindamine toimuvad sinu brauseris ning sinu andmed ei lahku sinu arvutist.
Miks minu filter ei tagasta midagi?
Kontrolli, et tee enne filtrit valib massiivi või objekti: $.store.book[?(@.price < 10)] filtreerib raamatuid, samal ajal kui $.store[?(@.price < 10)] vaatab book ja bicycle elemente. Elemendil puuduv omadus on undefined, seega on selle võrdlused väära tulemusega.
Mis vahe on `==` ja `===` vahel?
Nagu JavaScriptis, teisendab == tüüpe ("10" == 10 on tõene), samal ajal kui === võrdleb tüüpi ja väärtust.
Miks on väljund piiratud?
Tulemusse kirjutatakse ainult esimesed 10 000 vastet, et leht püsiks reageeriv; olekurida annab täieliku arvu.
Kas JSONPath on standardiseeritud?
Jah, alates 2024. aastast RFC 9535 näol. Teostused erinevad siiski, eriti filtrites; see tööriist järgib jsonpath-plusi, Stefan Goessneri algse JSONPathi süntaksit.
Seotud tööriistad
- JSON-i vormindaja ja valideerija Tasuta JSON-i vormindaja ja valideerija, mis kaunistab, minimeerib ja kontrollib JSON-i sinu brauseris ning teatab süntaksivead rea ja veeruga.
- JSON Schema valideerija Valideeri JSON-dokument JSON Schema vastu oma brauseris. Iga viga loetletakse koos eksemplari tee, võtmesõna ja skeemi teega.
- Regexi testija Testi JavaScripti regulaaravaldisi otse: esiletõstetud vasted, püüdvad grupid, asendus ja selge selgitus iga mustri elemendi kohta.