Farbschema: Riviera
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Office JSON » JSON in VBA lesen und schreiben

JSON in VBA lesen und schreiben

In diesem Tutorial laden Sie ein kleines JSON-Dokument, lesen Werte daraus mit JPath, durchlaufen ein Array, ändern das Dokument und speichern es. Sie benötigen dafür etwa zehn Minuten.

Voraussetzungen

Schritte

1. Verweis setzen

Wählen Sie im VBA-Editor (Alt+F11) Extras › Verweise, aktivieren Sie WKL Office JSON 1.2, und klicken Sie auf OK. IntelliSense kennt nun JDoc, JNode und die anderen Klassen.

2. Dokument laden

Fügen Sie ein Standardmodul ein, und legen Sie darin diese Prozedur an:

Public Sub JsonTutorial()
    Dim doc As New JDoc
    Dim text As String
    text = "{""customer"": {""id"": 42, ""name"": ""Müller""}, " & _
           """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 gibt für ungültigen Text False zurück und beschreibt das Problem in ParseError – wie loadXML in MSXML.

3. Einzelne Werte lesen

    Debug.Print doc.GetString("$.customer.name")         ' Müller
    Debug.Print doc.GetLong("$.customer.id")             ' 42
    Debug.Print doc.GetString("$.customer.fax", "ohne")  ' ohne: the default for a missing path

Jede Get-Methode erwartet einen JPath und gibt einen typisierten Wert zurück. Ohne Ersatzwert löst ein fehlender Pfad den Fehler jeNotFound aus.

4. Array durchlaufen

    Dim order As JNode
    For Each order In doc.SelectNodes("$.orders[*]")
        Debug.Print order.GetLong("id"), order.GetCurrency("total")
    Next

Pfade ohne $ beginnen an dem Knoten, für den Sie die Methode aufrufen; order.GetLong("id") liest daher die id der jeweiligen Bestellung. GetCurrency gibt den exakten Betrag zurück.

5. Dokument ändern

    doc.SetValue "$.customer.city", "Köln"
 
    Dim orders As JArray
    Set orders = doc.Root("orders")
    orders.AddElement.SetValue "id", 3

SetValue auf dem Dokument legt fehlende Objekte auf dem Weg an. Root("orders") verwendet den Standardmember Item und gibt einen JNode zurück; weisen Sie ihn einer Variablen vom Typ JArray zu, stehen Ihnen die Member des Arrays zur Verfügung. AddElement hängt ein leeres Objekt an und gibt es zurück.

6. Ergebnis schreiben

    Debug.Print doc.ToJson(True)
    doc.Save CurrentProject.Path & "\tutorial.json"
End Sub

ToJson(True) gibt den Text eingerückt aus; Save schreibt UTF-8.

7. Prozedur ausführen

Setzen Sie die Einfügemarke in JsonTutorial, und drücken Sie F5. Öffnen Sie den Direktbereich mit Strg+G.

Erwartetes Ergebnis

Der Direktbereich zeigt Müller, 42, ohne, die beiden Bestellungen mit ihren Beträgen (1 19,9 und 2 250 bei deutschen Regionaleinstellungen) sowie das eingerückte JSON mit dem neuen Schlüssel city und einer dritten Bestellung {"id": 3}. Die Datei tutorial.json liegt im Ordner der Datenbank.

Nächste Schritte

de/wiki/msaccess/json/tutorial.txt · Zuletzt geändert: von Wolfgang van der Stille