Ittestjar tal-JSONPath
Ittestja espressjonijiet JSONPath fuq il-JSON tiegħek stess fil-brawżer. Filtri, slices, nżul rikorsiv, paths u JSON Pointers, b’eżempji lesti.
Kif tittestja espressjoni JSONPath
- Waħħal il-JSON tiegħek f’Data JSON, jew ikklikkja Tella’ data tal-eżempju biex tuża l-eżempju klassiku tal-ħanut tal-kotba.
- Ikteb espressjoni f’Espressjoni JSONPath, jew agħżel waħda minn Eżempji.
- Ir-riżultat jiġi aġġornat waqt li tikteb; Wettaq il-mistoqsija iħaddimha mill-ġdid. Il-linja tal-istatus tagħti n-numru ta’ taqbilat.
- Uża Uri biex tbiddel bejn Valuri, Paths, JSON Pointers u Paths u valuri, imbagħad ikkopja r-riżultat.
Is-sintassi JSONPath fil-qosor
| Sintassi | Tifsira | Eżempju |
|---|---|---|
$ |
l-għerq tad-dokument | $ |
.name jew ['name'] |
tifel | $.store.bicycle |
* |
kull tifel | $.store.* |
.. |
nżul rikorsiv, f’kull fond | $..author |
[n] |
indiċi tal-array, minn 0 | $..book[2] |
[start:end:step] |
slice; in-numri negattivi jgħoddu mill-aħħar | $..book[-1:] |
[a,b] |
unjoni | $..book[0,1] |
[?(expr)] |
filtru | $..book[?(@.price < 10)] |
^ |
il-ġenitur ta’ kull taqbila | $..book[?(@.price > 20)]^ |
~ |
l-isem tal-proprjetà minflok il-valur | $.store.*~ |
Ir-riżultati jiġu rritornati fl-ordni tad-dokument. Paths jagħti paths normalizzati bħal $['store']['book'][0]['title'], u JSON Pointers jagħti l-forma RFC 6901 /store/book/0/title, utli għal JSON Patch jew għall-paths tal-iżbalji tal-validaturi tal-JSON Schema.
Espressjonijiet tal-filtru: x’huwa appoġġjat
Il-filtri jiġu evalwati bil-jsonpath-plus f’modalità sigura: l-espressjoni tiġi analizzata u interpretata minn evalwatur żgħir, qatt ma tgħaddi għal eval jew new Function. Ġewwa [?( … )] tista’ tuża:
@għall-oġġett kurrenti,@.fieldu@['field']għall-membri tiegħu,@rootgħad-dokument kollu ($mhuwiex disponibbli ġewwa filtru);- paraguni
==,!=,===,!==,<,<=,>,>=; - loġika
&&,||,!, aritmetika+ - * / %u t-ternarjua ? b : c; - literals ta’ string, numru,
true,false,nullu espressjoni regolari; - metodi tal-valuri nfushom, pereżempju
@.title.startsWith('S'),@.tags.includes('new')jew@.title.match(/lord/i); @property(iċ-ċavetta jew l-indiċi tal-oġġett kurrenti),@parentu@path(il-path normalizzat tiegħu), bl-istil tal-jsonpath-plus.
L-aċċess għal constructor, __proto__ u l-kostruttur Function huwa mblukkat. Jekk filtru jfalli fuq oġġett wieħed, pereżempju @.isbn.startsWith('0') fuq ktieb mingħajr isbn, dak l-oġġett sempliċement ma jaqbilx; żball tas-sintassi fl-espressjoni jiġi rrapportat. Filtri miktuba bil-mod RFC 9535, [?@.price < 10] mingħajr parentesi, jiġu aċċettati u mqjusa bħala [?(@.price < 10)]. Funzjonijiet RFC 9535 bħal length(), count(), match() u search() mhumiex disponibbli: uża metodi tal-JavaScript bħal @.name.length minflok.
Is-selettur tat-tip tal-jsonpath-plus jaħdem ukoll fl-aħħar ta’ path: $..*@number() jirritorna kull numru, u @string(), @boolean(), @array(), @object(), @null() u @integer() jagħmlu l-istess għal tipi oħra.
Mistoqsijiet frekwenti
Il-JSON tiegħi jintbagħat lil server?
Le. L-analiżi u l-evalwazzjoni jseħħu fil-brawżer tiegħek, u d-data tiegħek qatt ma titlaq mill-kompjuter tiegħek.
Għaliex il-filtru tiegħi ma jirritorna xejn?
Iċċekkja li l-path qabel il-filtru jagħżel array jew oġġett: $.store.book[?(@.price < 10)] jiffiltra l-kotba, filwaqt li $.store[?(@.price < 10)] iħares lejn book u bicycle. Proprjetà nieqsa minn oġġett hija undefined, għalhekk il-paragun magħha huwa falz.
X’inhi d-differenza bejn `==` u `===`?
Bħal fil-JavaScript, == jikkonverti t-tipi ("10" == 10 huwa veru) filwaqt li === iqabbel it-tip u l-valur.
Għaliex l-output huwa limitat?
Biss l-ewwel 10,000 taqbila jinkitbu fir-riżultat, biex il-paġna tibqa’ tirrispondi; il-linja tal-istatus tagħti l-għadd sħiħ.
Il-JSONPath huwa standardizzat?
Iva, mill-2024, mill-RFC 9535. L-implimentazzjonijiet xorta jvarjaw, speċjalment fil-filtri; din l-għodda issegwi l-jsonpath-plus, is-sintassi tal-JSONPath oriġinali ta’ Stefan Goessner.
Għodod relatati
- Formatter u validatur tal-JSON Formatter u validatur tal-JSON b’xejn li jibbewtifika, jimminimizza u jiċċekkja l-JSON fil-brawżer tiegħek, b’żbalji tas-sintassi bil-linja u l-kolonna.
- Validatur tal-JSON Schema Ivvalida dokument JSON kontra JSON Schema fil-brawżer tiegħek. Kull żball jiġi elenkat bil-path tal-istanza, il-keyword u l-path tal-iskema tiegħu.
- Ittestjar tar-Regex Ittestja espressjonijiet regolari JavaScript live b’taqbiliet enfasizzati, gruppi, sostituzzjoni u spjegazzjoni b’lingwaġġ sempliċi ta’ kull token.