Go处理JSON数据的实现
作者:Hejjon 发布时间:2024-02-23 07:44:42
标签:Go,JSON
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


猜你喜欢
- PHP版: $o = array('x'=>1, 'y'=>2, 'z'=>
- 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一
- 基本命令显示版本信息pip -V安装指定包pip install <packages>pip install -i 'h
- 1. 数据集基本信息df = pd.read_csv()df.head():前五行;df.info():rangeindex:行索引;dat
- 0x01 OpenCV安装 通过命令pip install opencv-python 安装pip install opencv-
- 本文为大家分享了python银行管理系统的具体代码,供大家参考,具体内容如下自己写的练手小程序,练习面向对象的概念,代码中都有注释,刚学的同
- 因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共
- 关于算法的学习,小编觉得编程语言中的算法大都有一些相通的地方,主要的方面一是了解这一算法能用来干什么,另一方面,学习它在这类编程语言中怎么实
- python UDP通信1.打开虚拟通信程序,选择UDP通信并选定收发数据的ip地址和port端口:2.在虚拟机中编写python程序与主机
- 一、观察者模式观察者模式,必须包含 “观察者” 和 “被观察者&rdqu
- 得益于 Python 的自动垃圾回收机制,在 Python 中创建对象时无须手动释放。这对开发者非常
- 1. 实验说明问题要求:针对静态单赋值(SSA)形式的函数中间代码输入,输出函数返回值的范围实现思路: 基本根据 2013年在CGO会议上提
- 前言:python虽然是一门'慢语言',但是也有着比较多的性能检测工具来帮助我们优化程序的运行效率。这里总结了五个比较好的p
- 导读我们在使用selenium打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息。当我们想要爬
- 从cmd进入python的方法如下1进入python打开cmd——>直接输入python即可,如下2退出python方法一:先按Ctr
- 我就废话不多说了,大家还是直接看代码吧~import pandas as pdimport numpy as npcolumns = [[&
- 本文实例讲述了Python实现获取磁盘剩余空间的2种方法。分享给大家供大家参考,具体如下:方法1:import ctypesimport o
- gchart:基于google图表API的jquery组件全攻略——入门gchart是基于google图表API的jquery组件。使用gc
- MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是100条调节和优化M
- 环境:主服务器:centos 5.2 mysql 5.1.35 源码 IP:192.168.1.22从服务器:centos 5.2 mysq