WKL Office JSON: JSON in Access und VBA
VBA bringt keinen eigenen JSON-Parser mit, und eine Zahl, die als Double gelesen wird, behält nur 15 bis 17
signifikante Stellen: Aus 9007199254740993 wird 9007199254740992. WKL Office JSON gibt Access und VBA das
Objektmodell, das Sie von MSXML kennen. Sie laden die Antwort eines Webdienstes, durchsuchen sie mit JPath, lesen
typisierte Werte, ändern oder erzeugen Knoten und schreiben JSON-Text oder eine Datei; Beträge und 19-stellige
Kennungen liest die Bibliothek ohne Umweg über Double. Je Bitbreite von Office gibt es eine DLL, eine .NET-Laufzeit
brauchen Sie nicht. Was die Bibliothek annimmt, umwandelt und ablehnt: Werte und Grenzen.
Bis Release 1.0.3 hieß die Bibliothek WKL Access JSON.
graph TD
D["JDoc – LoadJson, Load, Save, Json, ParseError, DateZone"] -->|"Root"| N["JNode (beliebiger Knoten) – Item, Value, Path, ChildNodes, JPath, SelectNodes, GetString …"]
N --> E["JElement – JSON-Objekt: Keys, HasKey, SetValue, AddElement, AddArray, RemoveKey"]
N --> A["JArray – JSON-Array: Add, Insert, RemoveAt"]
N --> V["JValue – Zeichenfolge, Zahl, true/false, null"]
N -->|"SelectNodes, ChildNodes"| L["JNodeList – Item, Count, For Each"]
D -->|"Laden fehlgeschlagen"| P["JParseError – Line, LinePos, SrcText, Reason"]Wichtige Funktionen
- Konzepte von MSXML:
JDocals Dokument,LoadJsonmitParseError,SelectSingleNodeundSelectNodes, Knotenlisten mitFor Each. - JPath nach RFC 9535 (JSONPath): Pfade, Platzhalter, rekursiver Abstieg, Bereiche (Slices), Filter mit Vergleichen und Funktionen.
- Typisierte Get-Methoden mit Ersatzwert:
GetString,GetLong,GetDouble,GetCurrency,GetDecimal,GetDate,GetBoolean,GetValue, jeweils mit einem optionalen Ersatzwert wie beiNz(). - Exakte Zahlen: Zahlen behalten den Text, mit dem sie gelesen wurden;
Json,SaveundGetStringändern daher nie eine Ziffer.GetCurrencyundGetDecimalwandeln diesen Text ohne Umweg überDoubleum;Currencyrundet anschließend auf vier Nachkommastellen,Decimalauf 28 bis 29 signifikante Stellen. 19-stellige Kennungen bleiben alsDecimalerhalten. - Datumswerte: ISO 8601 (Profil nach RFC 3339) in beide Richtungen, mit einer dokumentweiten Regel für Zeitzonen.
- JSON erzeugen:
SetValuelegt fehlende Objekte und Arrays automatisch an; außerdem verschachtelte Objekte, Kopien von Knoten und das Entfernen von Knoten. - Verhalten wie in Access: Standardmember
Item, Positionen ab 0,Isfür die Identität, feste Fehlernummern mit dem Pfad oder der Position in der Beschreibung. - Keine Laufzeitinstallation: eine NativeAOT-DLL je Bitbreite.
Grundkonzepte
Dokument und Knoten. Ein JDoc enthält genau einen Baum. Jeder Knoten ist ein JNode; seine konkrete Klasse ist
JElement (Objekt), JArray oder JValue, und NodeType gibt an, welche. Knoten, die Sie mit CreateElement,
CreateArray und CreateValue erzeugen, sind frei, bis Sie sie in das Dokument einfügen.
Pfade. JPath-Ausdrücke beginnen an der Wurzel ($) oder, ohne $, an dem Knoten, für den Sie die Methode
aufrufen. SelectSingleNode gibt den ersten Treffer oder Nothing zurück, SelectNodes alle Treffer, und Exists
gibt an, ob es einen Treffer gibt; die Get-Methoden lesen den ersten Treffer als typisierten Wert.
Werte. Eine Zahl wird im natürlichen VBA-Typ gelesen (Long, Decimal oder Double); die Get-Methoden wandeln in
den angeforderten Typ um und lehnen Werte, die nicht hineinpassen, ab, statt sie abzuschneiden. JSON-null ist in VBA
Null.
Fehler. Das Laden gibt wie bei MSXML False zurück und füllt ParseError. Alle anderen Fehler lösen einen
VBA-Fehler mit einer Nummer aus JErrorCode aus; ein Fehler, den die Bibliothek nicht vorhersieht, kommt als
&H8000FFFF mit dem Text der Ursache an, fehlender Arbeitsspeicher als &H8007000E. Die Meldungen
(ParseError.Reason, Err.Description) erscheinen auf Englisch, Deutsch, Slowenisch, Kroatisch oder Italienisch: in
der Sprache, die die WKL-Steuerelemente im selben Prozess verwenden, sonst in der Anzeigesprache von Windows, sonst auf
Englisch. Werten Sie Fehler immer anhand der Nummer aus, nie anhand des Textes; die Nummer ist in jeder Sprache
dieselbe.
Verwandte Themen
- Anleitungen:
- Werte und Grenzen: Typzuordnung zwischen JSON und VBA, Zahlen, Datumswerte, Grenzen
- Fehlerbehebung:
New JDocscheitert mit Fehler 429, oder der Verweis ist als NICHT VORHANDEN markiert: falsche Bitbreite, siehe WKL Office JSON installieren und verteilen