Go语言怎么实现JSON解析
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Go语言怎么实现JSON解析",在日常操作中,相信很多人在Go语言怎么实现JSON解析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Go语言怎么实现J
千家信息网最后更新 2026年11月01日Go语言怎么实现JSON解析
这篇文章主要介绍"Go语言怎么实现JSON解析",在日常操作中,相信很多人在Go语言怎么实现JSON解析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Go语言怎么实现JSON解析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、json序列化
将json字符串转为go语言结构体对象。
package main import ( "encoding/json" "errors" "fmt") var parseJsonError = errors.New("json parse error")var toJsonError = errors.New("to json error") type CustomJson struct { Name string Age int} //序列化为jsonfunc toJson(c *CustomJson) (string, error) { fmt.Printf("原始结构体: %v\n", c) if jsonStr, err := json.Marshal(c); err != nil { fmt.Println("Error =", err) return "", parseJsonError } else { return string(jsonStr), nil } } func main() { w := CustomJson{Name: "李四", Age: 30} result, _ := toJson(&w) fmt.Println(result)}执行结果
原始结构体: &{李四 30}
{"Name":"李四","Age":30}
注意
结构体的字段首字母要大写。如果json字符串首字母都是小写怎么办?后面会说tag的使用。
2、Json反序列化为结构体对象
将json字符串反序列化为结构体对象。
样例代码如下
package main import ( "encoding/json" "errors" "fmt") var parseJsonError = errors.New("json parse error")var toJsonError = errors.New("to json error") type CustomJson struct { Name string Age int} //反序列化为结构体对象func parseJson(a string) (CustomJson, error) { fmt.Printf("原始字符串: %s\n", a) var c CustomJson if err := json.Unmarshal([]byte(a), &c); err != nil { fmt.Println("Error =", err) return c, parseJsonError } return c, nil} func main() { j := `{"Name": "张三", "Age": 19}` if p, e := parseJson(j); e == nil { fmt.Printf("转换对象为: %v\n", p) }}执行结果
原始字符串: {"Name": "张三", "Age": 19}
转换对象为: {张三 19}
3、Json反序列化为map类型
将json字符串反序列化为map类型
样例代码如下
package main import ( "encoding/json" "errors" "fmt") var parseJsonError = errors.New("json parse error")var toJsonError = errors.New("to json error") type CustomJson struct { Name string Age int} //反序列化为mapfunc parseMap(a string) (map[string]interface{}, error) { fmt.Printf("原始字符串: %s\n", a) var m map[string]interface{} if err := json.Unmarshal([]byte(a), &m); err != nil { fmt.Println("Error =", err) return m, parseJsonError } for k, v := range m { fmt.Printf("k=%s,v类型为%T,v=%v\n", k, v, v) } return m, nil} func main() { j := `{"Name": "张三", "Age": 19}` if m, e := parseMap(j); e == nil { fmt.Printf("转换map为: %v\n", m) }}执行结果
原始字符串: {"Name": "张三", "Age": 19}
k=Name,v类型为string,v=张三
k=Age,v类型为float64,v=19
转换map为: map[Age:19 Name:张三]
注意
虽然是int类型的,但是反序列化的时候如果不做转换,会默认为float64。
4、Tag的使用
如果得到的json字符串每个key的首字母都是小写的,怎么转换为go的结构体对象呢?可以使用tag方式。
样例代码如下
package main import ( "encoding/json" "fmt") type TestJson struct { Name string `json:"name"` Age int `json:"age"`} func main() { j := `{"name": "张三", "age": 19}` var c TestJson if err := json.Unmarshal([]byte(j), &c); err != nil { fmt.Println("Error =", err) } fmt.Println(">>>>", c)}执行结果
>>>> {张三 19}
注意
将原字符串的key作为tag打给结构体的字段,就可以实现字段转换了。
到此,关于"Go语言怎么实现JSON解析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
字符
字符串
序列
结构
张三
对象
原始
类型
语言
结果
学习
代码
字段
字母
李四
小写
更多
帮助
实用
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
西安纸贵互联网科技有限公司
江苏根荣互联网科技
科技互联网产品
科技平台互联网
华宇互联网科技
奇士达互联网科技
互联网 新科技
重庆科技学院互联网
恒生科技互联网指数分析
互联网科技中介
互联网科技寓意
广州恒生互联网科技有限
互联网科技人工智能实验室
互联网科技实习生岗位
宁波跨境商互联网科技有限公司
昆明中奇联合互联网科技
互联网公司属于科技吗
唐山双旺合互联网科技产业园
安徽九吞吴互联网科技有限公司
疫情对互联网科技公司影响
中国 科技 互联网
狮子座互联网科技
互联网科技素材视频竖屏
互联网科技创新企业排名
阿里巴巴算科技企业还是互联网
哈尔滨屹滨互联网科技有限公司
群盈汇互联网科技有限公司
元气玛特互联网科技公司是外包吗
世界互联网科技成果奖