【GO】Go JSON 反序列化失败情况总结
Go 版本: 1.17.7
源码包 encoding/json
在平时的业务开发中,经常会有拿到一串序列化后的字符串要来反序列化。反序列化的时候,有时候可能 copy 错误,或者自己粗心写错,导致反序列化失败。短的 json 还行,肉眼看下就出来,但是长的 json 看就会很吃力。想要通过 json.Unmarshal 返回的 err 看错误信息,又比较难理解其意义,就这个问题做一个总结示例。
下面示例正确的要用来反序列化的如下:
复制代码
某个 key 缺少双引号
复制代码
json.Unmarshal 报错返回包含:looking for beginning of object key string
问题:key 都没有双引号
某个 key:value 后面缺少一个逗号
复制代码
json.Unmarshal 报错返回包含:invalid character '\"' after object key:value pair
问题:value 后面得有逗号
"}"前不能有逗号
复制代码
json.Unmarshal 报错返回包含:invalid character '}' looking for beginning of object key string
问题:最后一个 key:value 不需要跟着逗号
类型赋值错误
复制代码
json.Unmarshal 报错返回包含:string into Go struct field
问题:数据类型是 int 的,但是给的是字符串。这个问题是特例,类型赋值错误的场景也比较多。
key 没有对应的 value
复制代码
json.Unmarshal 报错返回包含:invalid character ',' after object key
问题:Vint:1 是 key,没有跟上 value,一般就是双引号写漏了
评论