Go语言怎么实现JSON解析
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"Go语言怎么实现JSON解析",在日常操作中,相信很多人在Go语言怎么实现JSON解析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Go语言怎么实现J
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
不用数据库实现图书管理系统
电气自动化对比计算机网络技术
学校网络安全主题班会简讯
工行软件开发中心助理经理
数据库的读写锁和写锁
台州汽车软件开发公司简介
军队网络安全工作规定
地球化学研究数据库
机房服务器如何重启
方舟非官方服务器开代码
数据库角色添加表权限
卓晨网络技术有限公司
阳泉软件开发规定
静海区网络技术售后保障
fm2021数据库找不到
淮安云主机服务器供货厂
浪潮服务器开机长鸣30
超星期刊数据库的优缺点
云服务器连接本地电脑数据库
济南掌世界网络技术
nbu备份服务器丢包
管家婆上的数据库软件
数据库数据仓库主要特点
常州网络安全宣传周开幕
广州数据库
网络安全主管一个月
三级网络技术大题技巧
医院网络安全自查报告范文
佛山bgp高防服务器
合肥一谈网络技术