Teknobench

Tástálaí JSONPath

Tástáil sloinn JSONPath ar do JSON féin sa bhrabhsálaí. Scagairí, slisní, tuirlingt athchúrsach, cosáin agus Pointeoirí JSON, le samplaí réamhdhéanta.

Conas slonn JSONPath a thástáil

  1. Greamaigh do JSON in Sonraí JSON, nó cliceáil Lódáil sonraí samplacha chun sampla clasaiceach an leabharlainne a úsáid.
  2. Clóscríobh slonn in Slonn JSONPath, nó roghnaigh ceann ó Samplaí.
  3. Nuashonraítear an toradh agus tú ag clóscríobh; ritheann Rith an fhiosrúchán arís é. Tugann an líne stádais líon na meaitseálacha.
  4. Úsáid Taispeáin chun aistriú idir Luachanna, Cosáin, Pointeoirí JSON agus Cosáin agus luachanna, ansin cóipeáil an toradh.

JSONPath i mbeagán focal

Comhréir Brí Sampla
$ fréamh an doiciméid $
.name nó ['name'] leanbh $.store.bicycle
* gach leanbh $.store.*
.. tuirlingt athchúrsach, ag aon doimhneacht $..author
[n] innéacs eagair, ó 0 $..book[2]
[start:end:step] slisne; áirítear uimhreacha diúltacha ón deireadh $..book[-1:]
[a,b] aontas $..book[0,1]
[?(expr)] scagaire $..book[?(@.price < 10)]
^ tuismitheoir gach meaitseála $..book[?(@.price > 20)]^
~ ainm na maoine in ionad an luacha $.store.*~

Cuirtear torthaí ar ais in ord an doiciméid. Tugann Cosáin cosáin normalaithe mar $['store']['book'][0]['title'], agus tugann Pointeoirí JSON an fhoirm RFC 6901 /store/book/0/title, áisiúil do JSON Patch nó do chosáin earráide bailíochtóirí Scéimre JSON.

Sloinn scagaire: cad a dtacaítear leis

Measúnaítear scagairí le jsonpath-plus i mód sábháilte: parsálann agus léirmhíníonn meastóir beag an slonn, ní chuirtear chuig eval ná new Function riamh é. Taobh istigh de [?( … )] is féidir leat a úsáid:

  • @ don mhír reatha, @.field agus @['field'] dá baill, @root don doiciméad iomlán (níl $ ar fáil taobh istigh de scagaire);
  • comparáidí ==, !=, ===, !==, <, <=, >, >=;
  • loighic &&, ||, !, uimhríocht + - * / % agus an tríréad a ? b : c;
  • litriúil sreinge, uimhreach, true, false, null agus slonn rialta;
  • modhanna na luachanna féin, mar shampla @.title.startsWith('S'), @.tags.includes('new') nó @.title.match(/lord/i);
  • @property (eochair nó innéacs na míre reatha), @parent agus @path (a cosán normalaithe), i stíl jsonpath-plus.

Tá rochtain ar constructor, __proto__ agus ar chrutheoir Function blocáilte. Má theipeann ar scagaire ar mhír amháin, mar shampla @.isbn.startsWith('0') ar leabhar gan isbn, ní mheaitseálann an mhír sin go simplí; tuairiscítear earráid chomhréire sa slonn. Glactar le scagairí scríofa ar bhealach RFC 9535, [?@.price < 10] gan lúibíní, agus léitear mar [?(@.price < 10)] iad. Níl feidhmeanna RFC 9535 mar length(), count(), match() agus search() ar fáil: úsáid modhanna JavaScript mar @.name.length ina n-ionad.

Oibríonn roghnóirí cineáil ó jsonpath-plus ag deireadh cosáin freisin: tugann $..*@number() gach uimhir ar ais, agus déanann @string(), @boolean(), @array(), @object(), @null() agus @integer() an rud céanna do chineálacha eile.

Ceisteanna coitianta

An seoltar mo JSON chuig freastalaí?

Ní sheoltar. Tarlaíonn parsáil agus meas i do bhrabhsálaí, agus ní fhágann do shonraí do ríomhaire riamh.

Cén fáth nach seolann mo scagaire aon rud ar ais?

Seiceáil go roghnaíonn an cosán roimh an scagaire eagar nó réad: scagann $.store.book[?(@.price < 10)] na leabhair, agus féachann $.store[?(@.price < 10)] ar book agus bicycle. Is undefined maoin atá ar iarraidh ó mhír, mar sin tá comparáidí léi bréagach.

Cad é an difríocht idir `==` agus `===`?

Mar i JavaScript, athraíonn == cineálacha (tá "10" == 10 fíor) agus déanann === cineál agus luach a chur i gcomparáid.

Cén fáth a bhfuil an t-aschur teoranta?

Ní scríobhtar ach an chéad 10,000 meaitseáil sa toradh, chun an leathanach a choinneáil freagrúil; tugann an líne stádais an líon iomlán.

An bhfuil JSONPath caighdeánaithe?

Tá, ó 2024, le RFC 9535. Tá difríochtaí idir cur i bhfeidhm fós, go háirithe i scagairí; leanann an uirlis seo jsonpath-plus, comhréir JSONPath bunaidh Stefan Goessner.