Color scheme: Riviera
You are here: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Office JSON » Branje in pisanje JSON v VBA

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

sl/wiki/msaccess/json/tutorial.txt · Last modified: by Wolfgang van der Stille