Branje in pisanje JSON v VBA
V tej vadnici naložite majhen dokument JSON, iz njega z JPath preberete vrednosti, v zanki obdelate polje, dokument spremenite in ga shranite. Za to potrebujete približno deset minut.
Predpogoji
- 32-bitni Microsoft 365 Access v sistemu Windows 11 (podprta konfiguracija; glejte Vrednosti in omejitve).
- WKL Office JSON, registriran za 32- ali 64-bitno različico Officea, ki jo uporabljate (Namestitev in uvajanje).
- Podatkovna zbirka, v katero lahko dodate modul.
Koraki
1. Nastavitev sklica
V urejevalniku VBA (Alt+F11) izberite Orodja › Sklici, označite WKL Office JSON 1.2 in
kliknite V redu. IntelliSense zdaj pozna JDoc, JNode in druge razrede.
2. Nalaganje dokumenta
Vstavite standardni modul in vanj dodajte to proceduro:
Public Sub JsonTutorial()
Dim doc As New JDoc
Dim text As String
text = "{""customer"": {""id"": 42, ""name"": ""Novak""}, " & _
"""orders"": [{""id"": 1, ""total"": 19.90}, {""id"": 2, ""total"": 250.00}]}"
If Not doc.LoadJson(text) Then
Debug.Print "Invalid JSON: "; doc.ParseError.Reason
Exit Sub
End If
LoadJson za neveljavno besedilo vrne False in težavo opiše v ParseError, tako kot
loadXML v MSXML.
3. Branje posameznih vrednosti
Debug.Print doc.GetString("$.customer.name") ' Novak
Debug.Print doc.GetLong("$.customer.id") ' 42
Debug.Print doc.GetString("$.customer.fax", "brez") ' brez: the default for a missing path
Vsaka bralna metoda sprejme pot JPath in vrne tipizirano vrednost. Če nadomestne vrednosti ne podate,
manjkajoča pot sproži napako jeNotFound.
4. Zanka po polju
Dim order As JNode
For Each order In doc.SelectNodes("$.orders[*]")
Debug.Print order.GetLong("id"), order.GetCurrency("total")
Next
Poti brez $ se začnejo pri vozlišču, na katerem jih pokličete, zato order.GetLong("id") prebere id
vsakega naročila. GetCurrency vrne natančen znesek.
5. Spreminjanje dokumenta
doc.SetValue "$.customer.city", "Maribor"
Dim orders As JArray
Set orders = doc.Root("orders")
orders.AddElement.SetValue "id", 3
SetValue na dokumentu sproti ustvari manjkajoče objekte. Root("orders") uporabi privzeti
član Item in vrne JNode; ko ga dodelite spremenljivki tipa JArray, dobite dostop do lastnih
članov polja. AddElement na konec doda prazen objekt in ga vrne.
6. Zapis rezultata
Debug.Print doc.ToJson(True)
doc.Save CurrentProject.Path & "\tutorial.json"
End Sub
ToJson(True) besedilo oblikuje z zamiki; Save zapiše UTF-8.
7. Zagon procedure
Postavite kazalec v JsonTutorial in pritisnite F5. Okno Immediate odprete s Ctrl+G.
Pričakovani rezultat
V oknu Immediate se izpišejo Novak, 42, brez, obe naročili z zneskoma (1 19,9
in 2 250 pri slovenskih področnih nastavitvah) in z zamiki oblikovani JSON z novim ključem city ter
tretjim naročilom {"id": 3}. Datoteka tutorial.json je v mapi podatkovne zbirke.
Naslednji koraki
- Poizvedovanje po JSON z JPath: filtri, rekurzivno iskanje, rezine
- Pregled objektnega modela