Barvna shema: Riviera
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Office JSON » how-to » Poizvedovanje po JSON z JPath

Poizvedovanje po JSON z JPath

V dokumentu po poti poiščete vozlišča in vrednosti, elemente polja filtrirate po njihovih vrednostih in iščete v poljubni globini.

Pregled rešitve

SelectNodes vrne vsa ujemanja izraza JPath, SelectSingleNode (kratka oblika JPath) prvo ujemanje ali Nothing, Exists pa pove, ali ujemanje obstaja. Bralne metode (GetString …) preberejo prvo ujemanje kot tipizirano vrednost. JPath sledi RFC 9535 z razširitvami in odstopanji, ki so našteta na strani Vrednosti in omejitve.

Izvedba

IzrazZadetek
$Koren
$.customer.name, $['first name']Član; oglati oklepaji za imena s presledki ali posebnimi znaki
$.lines[0], $.lines[-1]Element po položaju, štetem od 0; negativni položaji se štejejo od konca
$.lines[*]Vsi elementi
$..idVsak id v poljubni globini
$.lines[0,2], $.lines[1:3]Izbor, rezina (konec ni vključen)
$.lines[?@.price < 10 && @.kind == 'A']Elementi, katerih člani ustrezajo pogoju; tudi [?(@.price < 10)]
$.lines[?match(@.no, 'A-.*')]Funkcije filtrov: length, count, match, search, value
customer.nameBrez $: od vozlišča, na katerem pokličete metodo
Dim line As JNode
For Each line In doc.SelectNodes("$.lines[?@.price >= 100]")
    Debug.Print line.GetString("no"), line.GetCurrency("price")
Next
 
' A default covers both a missing key and the value null.
Debug.Print doc.GetString("$.customer.vatId", "")
 
Dim first As JNode
Set first = doc.SelectSingleNode("$..items[?@.stock == 0]")
If Not first Is Nothing Then Debug.Print first.Path

Opombe

  • match z regularnim izrazom primerja celotno vrednost, search katerikoli njen del. Vzorci so regularni izrazi .NET, ne I-Regexp (RFC 9485); neveljaven vzorec vrne false, kot predpisuje RFC 9535, false pa vrne tudi vzorec, ki se izvaja dlje kot eno sekundo. Glejte Vrednosti in omejitve.
  • Ključi razlikujejo velike in male črke, tako kot v JSON.
  • Exists je True tudi za ključ, katerega vrednost je null; bralna metoda brez nadomestne vrednosti tedaj sproži napako. Neobvezne vrednosti berite z nadomestno vrednostjo (GetString(path, "")), ki enako pokrije manjkajoč ključ in null.
  • Neveljaven izraz sproži jePathSyntax s položajem težave.
  • Path vozlišča vrne kanonični izraz te knjižnice (zapis s piko, ne oklepajska oblika normalizirane poti po RFC 9535), s katerim vozlišče znova najdete, na primer $.lines[2].
  • Prevedeni izrazi se hranijo v predpomnilniku; če isti izraz uporabljate v zanki prek veliko zapisov, se ne razčlenjuje vedno znova.

Sorodne teme

sl/wiki/msaccess/json/how-to/query-with-jpath.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille