Go语言怎么实现JSON解析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"Go语言怎么实现JSON解析",在日常操作中,相信很多人在Go语言怎么实现JSON解析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Go语言怎么实现J
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
通信网络技术产业联盟现况
石家庄软件开发价格走势
维普资讯数据库类型
长沙民政学院软件开发专业怎么样
百度时代网络技术北京
万方数据库知识脉络分析
公司网络安全应急演练方案
网络安全测评师证多少钱
数据库查找语句
医百科技与药企拥抱互联网
软件开发类的公司注册
紫金定制软件开发
想开一家软件开发公司
旧电脑制作服务器群晖
无法连接到服务器1-1
网络安全手抄报报头
刀山服务器
高级数据库阶段有哪些技术
我的世界主播基岩版服务器
电站网络安全维护
网络安全审查实施时间
pubg一直服务器繁忙
赤赫软件开发
广州第三方软件开发定做
dnf手游服务器怎么进不去
远恒互联网络科技
江苏智慧城管软件开发系统
京东2005年服务器
软件开发著作权合作协议书
中信银行软件开发 加班