[golang]标准库-json
前言
json数据格式通常包含两个操作:序列化(把对象转换成JSON数据类型)和反序列化(把JSON数据类型转换成对象),二者操作互逆。
Go语言中相关标准库为encoding/json
。
示例代码
package main
import (
"encoding/json"
"fmt"
)
type JsonExample struct {
Name string `json:"name,omitempty"` // 序列化后显示为name,若其值为空,则不显示该字段
Age int `json:"age"` // 序列化后显示为age
School string `json:"university"` // 序列化后显示为university
Class []string `json:"class"`
}
// 对象序列化为json
func JsonMarshal() {
var jex JsonExample = JsonExample{
Name: "Go",
Age: 12,
School: "TsingHua",
Class: []string{"YuWen", "ShuXue", "YingYu"},
}
by, _ := json.Marshal(jex)
fmt.Println(string(by))
}
// json反序列化为对象
func JsonUnmarshal() {
var v JsonExample
by := []byte(`{"name": "python","age":18,"university": "ustc","class": ["WuLi","HuaXue","ShengWu"]}`)
json.Unmarshal(by, &v)
fmt.Printf("%+v\n", v)
}
func main() {
JsonMarshal() // {"name":"Go","age":12,"university":"TsingHua","class":["YuWen","ShuXue","YingYu"]}
fmt.Println("=============")
JsonUnmarshal() // {Name:python Age:18 School:ustc Class:[WuLi HuaXue ShengWu]}
}
注意事项:
- 如果知道反序列化之后的具体结构,那么应该先定义一个符合反序列之后的结构体。
- 如果不知道反序列化之后的具体结构,那么应该使用
interface
来表示任意类型。 - 结构体定义时的标签用于指定序列化之后的显示。
参考文档
- 谢伟《Go语言项目开发上手指南》机械工业出版社
- 官方json包文档
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/15780158.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人