[golang]标准库-json

简介: [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来表示任意类型。
  • 结构体定义时的标签用于指定序列化之后的显示。

参考文档

相关文章
|
25天前
|
JSON Go 开发者
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
36 4
|
1月前
|
存储 Cloud Native Shell
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
|
6月前
|
JSON 数据处理 数据安全/隐私保护
Ktor库的高级用法:代理服务器与JSON处理
Ktor库的高级用法:代理服务器与JSON处理
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
159 0
在Java中处理JSON数据:Jackson与Gson库比较
|
3月前
|
JSON Go 数据格式
Golang语言结构体链式编程与JSON序列化
这篇文章是关于Go语言中结构体链式编程与JSON序列化的教程,详细介绍了JSON格式的基本概念、结构体的序列化与反序列化、结构体标签的使用以及如何实现链式编程。
46 4
|
3月前
|
Unix Go
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
62 3
|
4月前
|
JSON Go API
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
335 2
|
4月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库
|
4月前
|
存储 JSON Go
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
456 0
|
6月前
|
存储 JSON JavaScript
Python教程:一文了解Python中的json库
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,易于人类阅读和编写,也易于计算机解析和生成。在Python中,JSON通常用于数据交换和存储,因为它与Python的字典和列表类型相似。
743 2