Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go JSON反序列化失败情况

Go JSON反序列化失败情况及解决过程

作者:非晓为骁

这段描述主要讲解了Go语言中`encoding/json`包在反序列化JSON字符串时可能出现的问题及,包括缺少双引号、逗号位置错误以及类型赋值错误等

Go JSON反序列化失败情况

Go版本: 1.17.7

源码包 encoding/json

下面示例正确的要用来反序列化的如下:

type A struct {
	Vint    int
	Vstring string
	Vfloat  float64
}

`{
	"Vint":1,
	"Vstring": "test",
	"Vfloat":15.15
}`

某个key缺少双引号

`{
	Vint:1
	Vstring: "test"
	Vfloat: 15.15
}`

json.Unmarshal报错返回包含:

looking for beginning of object key string

问题:key都没有双引号

某个key:value后面缺少一个逗号

`{
	"Vint":1
	"Vstring": "test"
	"Vfloat": 15.15
}`

json.Unmarshal报错返回包含:

invalid character '\"' after object key:value pair

问题:value后面得有逗号

"}"前不能有逗号

`{
	"Vint":1,
	"Vstring": "test",
	"Vfloat": 15.15,
}`

json.Unmarshal报错返回包含:

invalid character '}' looking for beginning of object key string

问题:最后一个key:value不需要跟着逗号

类型赋值错误

`{
	"Vint":"1",
	"Vstring": "test",
	"Vfloat": 15.15
}`

json.Unmarshal报错返回包含:

string into Go struct field

问题:数据类型是int的,但是给的是字符串。这个问题是特例,类型赋值错误的场景也比较多。

key没有对应的value

`{
	"Vint:1",
	"Vstring": "test",
	"Vfloat": 15.15
}`

json.Unmarshal报错返回包含:

invalid character ',' after object key

问题:Vint:1是key,没有跟上value,一般就是双引号写漏了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文