Go处理JSON数据的实现
作者:Hejjon 时间:2024-02-23 07:44:42
Go 处理 json数据主要就是使用 json 包下的 Marshal 和 UnMarshal 两个函数。
定义结构体 User
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Height float64 `json:"height"`
Hobbies []string `json:"hobbies"`
}
json 标签定义的名称就是转json时的key
1. 结构体对象转 JSON 字符串
u := User{"张三", 19, 180.0, []string{"篮球", "跑步"}}
bytes, _ := json.Marshal(u) // Marshal函数转成的是 byte 数组
jsonStr := string(bytes) // 通过类型转换将字节数组转成json字符串
fmt.Println(jsonStr)
打印结果如下:
{"name":"张三","age":19,"height":180,"hobbies":["篮球","跑步"]}
2. JSON 字符串转结构体对象
var u2 User // 定义结构体变量接收
jsonStr := `{"name":"张三","age":19,"height":180,"hobbies":["篮球","跑步"]}`
_ = json.Unmarshal([]byte(jsonStr), &u2) // 相反地类型转换将json字符串转成字节数组后 再调用 json.Unmarshal 函数
fmt.Println(u2)
打印结果如下:
{张三 19 180 [篮球 跑步]}
3. 结构体切片转JSON字符串
和对象类型一样,都是调用json包的 Marshal 方法
u1 := User{"张三", 19, 180.0, []string{"篮球", "跑步"}}
u2 := User{"李四", 18, 172.0, []string{"散步", "看书"}}
u3 := User{"王五", 20, 169.0, []string{"篮球", "爬山"}}
u4 := User{"赵六", 21, 158.0, []string{"乒乓球", "涉水"}}
// 定义切片
users := []User{u1, u2, u3, u4}
bytes, _ := json.Marshal(users)
jsonStr := string(bytes)
fmt.Println(jsonStr)
4. JSON字符串(JSON数组)转切片
var users2 []User // 定义结构体切片
_ = json.Unmarshal([]byte(jsonStr), &users2) // 将json数组(字符串)转成结构体切片
fmt.Println(users2)
参数 jsonStr 就是3中转成的json字符串
5. JSON 字符串转Map,不需要定义结构体
jsonStr := `{"name": "zhangsan", "age": 19}`
mp := make(map[string]interface{})
_ = json.Unmarshal([]byte(jsonStr), &mp)
fmt.Println(mp)
fmt.Println(mp["name"]) // zhangsan
// 遍历map
for k, v := range mp {
fmt.Println(k, v)
}
来源:https://blog.csdn.net/qq_42026600/article/details/129037075
标签:Go,JSON


猜你喜欢
python 换位密码算法的实例详解
2021-10-07 10:25:57
PHP使用缓存即时输出内容(output buffering)的方法
2023-11-23 20:12:11
浅谈Python xlwings 读取Excel文件的正确姿势
2021-10-15 23:33:36

Python进行特征提取的示例代码
2021-04-07 15:59:12
django中使用memcached示例详解
2023-02-10 07:30:50
python-try-except:pass的用法及说明
2022-07-21 13:22:24
Python实现爬取天气数据并可视化分析
2023-02-09 00:33:14

Flask核心机制之上下文源码剖析
2022-07-29 18:23:28
浅谈pytorch grad_fn以及权重梯度不更新的问题
2022-10-30 00:00:18
Python中使用摄像头实现简单的延时摄影技术
2023-10-24 01:31:04

在Pandas中处理NaN值的方法
2021-05-31 05:37:22

vue3中使用ref和emit来减少props的使用示例详解
2024-04-27 16:02:02

django 邮件发送模块smtp使用详解
2021-09-24 23:04:15
Pytorch提取模型特征向量保存至csv的例子
2022-09-28 00:41:17
python的help函数如何使用
2023-12-21 10:46:48
python 限制函数调用次数的实例讲解
2023-11-11 00:34:23
iscroll碰到Select无法选择下拉刷新的解决办法
2024-05-11 09:33:35
windows mysql 自动备份的几种方法汇总
2024-01-25 05:44:43
用python制作个论文下载器(图形化界面)
2022-08-01 00:04:15

Python自动连接ssh的方法
2023-09-20 00:12:16