Bralna metoda sproži jeTypeMismatch
GetLong, GetCurrency, GetDate ali druga bralna metoda sproži napako jeTypeMismatch
(vbObjectError + 516), čeprav pot obstaja, ali celo kljub podani nadomestni vrednosti.
Okolje
Vse različice WKL Office JSON.
Vzrok
Bralne metode pretvorijo vrednost, ki jo najdejo po poti, vrednosti, ki ne ustrezajo, pa zavrnejo, namesto da bi jih okrnile ali vrnile nadomestno vrednost:
GetLongza število z decimalnim delom (2.5) ali zunaj obsegaLong.GetBooleanza niz, ki ni"true"ali"false"(primerja se ne glede na velike in male črke, presledki okrog se prezrejo; števila so sprejeta: število, ki je po pretvorbi vDecimalenako 0, je False).GetDouble,GetCurrencyaliGetDecimalza število zunaj obsega tipa.- Številska bralna metoda za niz, ki ni število JSON (
"12,5","007","+5"). GetDateza število (na primer časovni žig Unix).- Nadomestna vrednost, ki je ni mogoče pretvoriti v tip bralne metode (
GetLong(path, "abc")). - Vsaka bralna metoda brez nadomestne vrednosti za JSON
null.
Nadomestna vrednost nadomesti samo manjkajočo pot ali null. Vrednost napačnega tipa ostane napaka,
ker bi tiho nadomeščanje z nadomestno vrednostjo prikrilo težavo v podatkih.
Rešitev
- Preverite vrednost:
Debug.Print doc.SelectSingleNode(path).ToJson. - Uporabite bralno metodo, ki ustreza podatkom:
GetDoublealiGetDecimalza decimalna števila,GetStringza datume v drugih oblikah (te nato pretvorite sCDatepo lastnih pravilih). - Za vrednosti, ki so lahko
null, podajte nadomestno vrednost, na primerGetLong("$.qty", 0).
sl/wiki/msaccess/json/troubleshooting/getter-type-mismatch.txt · Zuletzt geändert: von Wolfgang van der Stille