Utilia

JSONPath-prófari

Prófaðu JSONPath-segðir á þínu eigin JSON í vafranum. Síur, sneiðar, endurkvæm niðurstigning, slóðir og JSON Pointer, með tilbúnum dæmum.

Hvernig á að prófa JSONPath-segð

  1. Límdu JSON-ið þitt í JSON-gögn, eða smelltu á Hlaða inn sýnishorni til að nota klassíska bókabúðardæmið.
  2. Sláðu inn segð í JSONPath-segð, eða veldu eina úr Dæmi.
  3. Niðurstaðan uppfærist á meðan þú skrifar; Keyra fyrirspurn keyrir hana aftur. Stöðulínan gefur fjölda samsvarana.
  4. Notaðu Sýna til að skipta á milli Gildi, Slóðir, JSON Pointer og Slóðir og gildi og afritaðu síðan niðurstöðuna.

JSONPath-setningafræði í stuttu máli

Setningafræði Merking Dæmi
$ rót skjalsins $
.name eða ['name'] undirþáttur $.store.bicycle
* hver undirþáttur $.store.*
.. endurkvæm niðurstigning, á hvaða dýpt sem er $..author
[n] fylkisvísir, frá 0 $..book[2]
[start:end:step] sneið; neikvæðar tölur telja frá endanum $..book[-1:]
[a,b] sammengi $..book[0,1]
[?(expr)] sía $..book[?(@.price < 10)]
^ foreldri hverrar samsvörunar $..book[?(@.price > 20)]^
~ eigindaheitið í stað gildisins $.store.*~

Niðurstöður eru skilaðar í röð skjalsins. Slóðir gefur staðlaðar slóðir eins og $['store']['book'][0]['title'] og JSON Pointer gefur RFC 6901-formið /store/book/0/title, hentugt fyrir JSON Patch eða villuslóðir JSON Schema-sannprófara.

Síusegðir: hvað er stutt

Síur eru metnar með jsonpath-plus í öruggum ham: segðin er þáttuð og túlkuð af litlum matara, aldrei send í eval eða new Function. Inni í [?( … )] geturðu notað:

  • @ fyrir núverandi atriði, @.field og @['field'] fyrir meðlimi þess, @root fyrir allt skjalið ($ er ekki í boði inni í síu);
  • samanburð ==, !=, ===, !==, <, <=, >, >=;
  • rökvirkja &&, ||, !, reikniaðgerðir + - * / % og þrenndarvirkjann a ? b : c;
  • strengi, tölur, true, false, null og bókstafsgildi reglulegra segða;
  • aðferðir gildanna sjálfra, til dæmis @.title.startsWith('S'), @.tags.includes('new') eða @.title.match(/lord/i);
  • @property (lykill eða vísir núverandi atriðis), @parent og @path (staðlaða slóð þess), að hætti jsonpath-plus.

Aðgangur að constructor, __proto__ og Function-smiðnum er lokaður. Ef sía bregst á einu atriði, til dæmis @.isbn.startsWith('0') á bók án isbn, passar það atriði einfaldlega ekki; setningafræðivilla í segðinni er tilkynnt. Síur skrifaðar að hætti RFC 9535, [?@.price < 10] án sviga, eru samþykktar og lesnar sem [?(@.price < 10)]. RFC 9535-föll eins og length(), count(), match() og search() eru ekki í boði: notaðu JavaScript-aðferðir eins og @.name.length í staðinn.

Tegundaveljarar frá jsonpath-plus virka líka aftast í slóð: $..*@number() skilar hverri tölu og @string(), @boolean(), @array(), @object(), @null() og @integer() gera það sama fyrir aðrar tegundir.

Algengar spurningar

Er JSON-ið mitt sent á netþjón?

Nei. Þáttun og mat fer fram í vafranum þínum og gögnin þín fara aldrei úr tölvunni þinni.

Af hverju skilar sían minni engu?

Athugaðu að slóðin á undan síunni velji fylki eða hlut: $.store.book[?(@.price < 10)] síar bækurnar, en $.store[?(@.price < 10)] skoðar book og bicycle. Eigindi sem vantar í atriði er undefined, svo samanburður við það er ósatt.

Hver er munurinn á `==` og `===`?

Eins og í JavaScript umbreytir == tegundum ("10" == 10 er satt) en === ber saman tegund og gildi.

Af hverju er úttakið takmarkað?

Aðeins fyrstu 10 000 samsvaranirnar eru skrifaðar í niðurstöðuna, til að halda síðunni viðbragðsfljótri; stöðulínan gefur heildarfjöldann.

Er JSONPath staðlað?

Já, frá 2024, með RFC 9535. Útfærslur eru þó enn ólíkar, sérstaklega í síum; þetta verkfæri fylgir jsonpath-plus, setningafræði upprunalega JSONPath Stefans Goessner.