Obravnava neveljavnega JSON
Odzovete se na JSON, ki ga ni mogoče razčleniti, in uporabniku ali v dnevnik sporočite, kje je težava.
Pregled rešitve
LoadJson in Load za neveljaven vhod vrneta False in v ParseError vpišeta kodo napake,
vrstico in stolpec, besedilo vrstice ter razlog, tako kot loadXML v MSXML. Ob nalaganju se ne
sproži nobena napaka VBA.
Izvedba
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
Za datoteko:
If Not doc.Load(CurrentProject.Path & "\settings.json") Then
MsgBox doc.ParseError.Reason, vbExclamation
End If
Opombe
- Vrnjeno vrednost vedno preverite. Po neuspelem nalaganju napako nalaganja znova sprožijo samo bralne metode brez nadomestne vrednosti (
jeParseErrorali poLoadjeFileError); poizvedbe ne javijo ničesar (SelectNodesvrne prazen seznam, zato se zankaFor Eachpo njem ne izvede;SelectSingleNodeinRootvrnetaNothing;ExistsvrneFalse), bralne metode z nadomestno vrednostjo pa vrnejo nadomestno vrednost. ParseError.FilePosje položaj znaka v celotnem besedilu, štet od 0;LineinLinePosse štejeta od 1.- Komentarji, končne vejice in enojni narekovaji niso veljaven JSON; razlog navede nepričakovani znak, vejico ali narekovaje (odpravljanje težav).
- Tudi manjkajočo ali neberljivo datoteko pri
LoadsporočiParseError;SavesprožijeFileError.
Sorodne teme
- `JDoc.LoadJson`, `JParseError` (referenca API v angleščini)
sl/wiki/msaccess/json/how-to/handle-invalid-json.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille