Benutzer-Werkzeuge

Farbschema: Dunkel

Office JSON

JSON-Parser für VBA – mit dem Objektmodell, das Sie von MSXML kennen

Eine Webdienst-Antwort laden, mit JPath abfragen, typisierte Werte lesen und JSON zurückschreiben – mit dem Objektmodell von MSXML. Beträge und lange Kennungen kommen genau so zurück, wie sie gesendet wurden.

VBA-Code mit JDoc, GetCurrency und GetDecimal; daneben das Ergebnis 1234567.89 und 9007199254740993 ohne Rundung

Ausgangslage

Webdienste und REST-Schnittstellen antworten in JSON, Access und VBA bringen dafür nichts mit. Wer JSON von Hand zerlegt oder über Double liest, verliert schnell eine Ziffer: Beträge werden gerundet, 19-stellige Kennungen passen nicht mehr, und ein Datum verschiebt sich um die Zeitzone.

Die Lösung

Office JSON bringt JSON mit dem Objektmodell von MSXML nach VBA. Zahlen behalten den Text, mit dem sie gelesen wurden – Speichern ändert nie eine Ziffer.

So arbeiten Sie damit:

  1. Die Antwort mit LoadJson laden; ParseError sagt, wo ein Text nicht stimmt.
  2. Mit JPath abfragen und typisierte Werte lesen, etwa GetCurrency oder GetDate.
  3. Knoten ändern oder anlegen und das Ergebnis als JSON-Text oder in eine Datei schreiben.
  • Nichts Neues zu lernen: JDoc, LoadJson mit ParseError, SelectSingleNode, SelectNodes und For Each funktionieren wie in MSXML.
  • Exakte Zahlen: Currency und Decimal kommen ohne Umweg über Double zurück, 19-stellige Kennungen bleiben erhalten.
  • Abfragen statt Schleifen: JPath nach RFC 9535 mit Pfaden, Platzhaltern, rekursivem Abstieg, Bereichen und Filtern.
  • Fehler über die Nummer behandeln: feste Fehlernummern mit dem Pfad oder der Position in der Beschreibung.

Vom Text zum genauen Wert

JDoc lädt den Text, JPath findet den Wert, und die typisierten Getter lesen ihn so, wie er im JSON steht.

Ablauf: JSON-Text, JDoc, JPath, typisierter Wert als Decimal 9007199254740993
Zahlen bleiben Text, bis Sie einen Typ verlangen. Erst GetDouble rechnet mit Double.

Funktionen

  • Typisierte Get-Methoden mit Ersatzwert wie bei Nz(): GetString, GetLong, GetCurrency, GetDecimal, GetDate und weitere
  • Ein Wert, der nicht in den angeforderten Typ passt, wird abgelehnt, nicht abgeschnitten
  • Datumswerte nach ISO 8601 in beide Richtungen, mit einer dokumentweiten Regel für Zeitzonen
  • JSON erzeugen: SetValue legt fehlende Objekte und Arrays an; Knoten kopieren und entfernen
  • Fehlermeldungen auf Deutsch, Englisch, Slowenisch, Kroatisch oder Italienisch
  • Keine Laufzeitinstallation: eine native DLL je Bitbreite, ohne .NET

Technische Daten

Häufige Fragen

Was muss ich installieren?

Nur die Bibliothek: eine native DLL je Bitbreite, ohne .NET und ohne Laufzeit. Installieren und verteilen

Wie streng liest die Bibliothek JSON?

Nach dem Standard, damit kein Wert falsch gelesen wird. Welche großzügigen Schreibweisen anderer Werkzeuge sie zurückweist und wie Sie damit umgehen, steht in der Fehlerbehebung.

Wie fange ich an?

Mit dem Tutorial: ein Dokument laden, Werte mit JPath lesen, es ändern und speichern – in etwa zehn Minuten. JSON in VBA lesen und schreiben

Ist das WKL Access JSON?

Ja. Office JSON ist der neue Name der Bibliothek, die bisher WKL Access JSON hieß.

Einrichtung, Beispiele und Referenz, Schritt für Schritt: Alles steht in der Dokumentation.

Dokumentation öffnen