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

 更新时间:2026年06月24日 08:42:52   作者:非晓为骁  
这段描述主要讲解了Go语言中`encoding/json`包在反序列化JSON字符串时可能出现的问题及,包括缺少双引号、逗号位置错误以及类型赋值错误等

Go JSON反序列化失败情况

Go版本: 1.17.7

源码包 encoding/json

  • 在平时的业务开发中,经常会有拿到一串序列化后的字符串要来反序列化。
  • 反序列化的时候,有时候可能copy错误,或者自己粗心写错,导致反序列化失败。
  • 短的json还行,肉眼看下就出来,但是长的json看就会很吃力。
  • 想要通过json.Unmarshal返回的err看错误信息,又比较难理解其意义,就这个问题做一个总结示例。

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

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,一般就是双引号写漏了

总结

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

相关文章

  • Go语言kube-scheduler深度剖析开发之scheduler初始化

    Go语言kube-scheduler深度剖析开发之scheduler初始化

    这篇文章主要介绍了Go语言kube-scheduler深度剖析开发之scheduler初始化实现过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Go语言实现二分查找方法示例

    Go语言实现二分查找方法示例

    这篇文章主要为大家介绍了Go语言实现二分查找方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • GoFrame gmap遍历hashmap listmap treemap使用技巧

    GoFrame gmap遍历hashmap listmap treemap使用技巧

    这篇文章主要为大家介绍了GoFrame gmap遍历hashmap listmap treemap使用技巧的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang try catch与错误处理的实现

    Golang try catch与错误处理的实现

    社区不少人在谈论 golang 为毛不用try/catch模式,而采用苛刻的recovery、panic、defer组合,本文就来详细的介绍一下,感兴趣的可以了解一下
    2021-07-07
  • Go语言如何轻松编写高效可靠的并发程序

    Go语言如何轻松编写高效可靠的并发程序

    这篇文章主要为大家介绍了Go语言轻松编写高效可靠的并发程序实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Golang中的内存泄漏你真的理解了吗

    Golang中的内存泄漏你真的理解了吗

    内存泄漏是编程中常见的问题,会对程序的性能和稳定性产生严重影响,本文将深入详解 Golang 中的内存泄漏的原因、检测方法以及避免方法,希望对大家有所帮助
    2023-12-12
  • 看看你的Go应用是否用了正确CPU核数

    看看你的Go应用是否用了正确CPU核数

    这篇文章主要为大家介绍了Go应用正确的CPU核数分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Golang中Mutex 自旋的实现

    Golang中Mutex 自旋的实现

    sync.Mutex是最常用的同步工具,但很少有人知道它在特定条件下会进行智能自旋,本文就来介绍一下Golang中Mutex 自旋的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • golang中进行条件编译的示例详解

    golang中进行条件编译的示例详解

    条件编译顾名思义就是在编译时让代码中的一部分生效或者失效,从而控制编译时的代码执行路径,进而影响编译出来的程序的行为,下面我们就来看看如何在golang中进行条件编译吧
    2025-03-03
  • Go Java 算法之字符串解码示例详解

    Go Java 算法之字符串解码示例详解

    这篇文章主要为大家介绍了Go Java 算法之字符串解码示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论