Ungültiges JSON behandeln
Sie reagieren auf JSON, das sich nicht parsen lässt, und teilen dem Benutzer oder dem Protokoll mit, wo das Problem liegt.
Lösungsüberblick
LoadJson und Load geben für ungültige Eingaben False zurück und füllen ParseError mit dem Fehlercode, der
Zeile und Spalte, dem Text der Zeile und der Ursache – so wie loadXML in MSXML. Beim Laden wird kein VBA-Fehler
ausgelöst.
Umsetzung
Dim doc As New JDoc
If Not doc.LoadJson(text) Then
With doc.ParseError
Debug.Print "Line " & .Line & ", column " & .LinePos & ": " & .Reason
Debug.Print .SrcText
If .LinePos > 0 Then Debug.Print String(.LinePos - 1, " ") & "^"
End With
Exit Sub
End If
Für eine Datei:
If Not doc.Load(CurrentProject.Path & "\settings.json") Then
MsgBox doc.ParseError.Reason, vbExclamation
End If
Hinweise
- Prüfen Sie immer den Rückgabewert. Nach einem fehlgeschlagenen Laden lösen nur die Get-Methoden ohne Ersatzwert den Fehler des Ladens erneut aus (
jeParseErroroder, nachLoad,jeFileError); Abfragen melden nichts (SelectNodesgibt eine leere Liste zurück, eineFor Each-Schleife darüber läuft also nicht;SelectSingleNodeundRootgebenNothingzurück;ExistsgibtFalsezurück), und Get-Methoden mit Ersatzwert geben den Ersatzwert zurück. ParseError.FilePosist die Zeichenposition im gesamten Text, gezählt ab 0;LineundLinePoszählen ab 1.- Kommentare, Kommas nach dem letzten Eintrag und einfache Anführungszeichen sind ungültiges JSON; die Ursache nennt das unerwartete Zeichen, das Komma oder die Anführungszeichen (Fehlerbehebung).
- Eine fehlende oder nicht lesbare Datei meldet
Loadebenfalls inParseError;Savelöst dagegenjeFileErroraus.
Verwandte Themen
- API-Referenz (Englisch): `JDoc.LoadJson`, `JParseError`
de/wiki/msaccess/json/how-to/handle-invalid-json.txt · Last modified: by Wolfgang van der Stille