![21118e6cf3c00669d5facd3c0791cd5f.png](https://img-blog.csdnimg.cn/img_convert/21118e6cf3c00669d5facd3c0791cd5f.png)
JSON(JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。尽管JSON是JavaScript的一个子集,但JSON采用完全独立于编程语言的文本格式,且表现为键/值对集合的文本描述形式(类似一些编程语言中的字典结构),这使它成为较为理想的、跨平台、跨语言的数据交换语言。
开发者可以用JSON传输简单的字符串、数字、布尔值,也可以传输一个数组,或者一个更复杂的复合结构。在 Web 开发领域中, JSON被广泛应用于 Web 服务端程序和客户端之间的数据通信,但也不仅仅局限于此,其应用范围非常广阔,比如作为Web Services API输出的标准格式,又或是用作程序网络通信中的远程过程调用(RPC)等。
关于JSON的更多信息,请访问JSON官方网站http://json.org/ 查阅。
Go语言内建对JSON的支持。使用Go语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据。在Go语言实现JSON的编码和解码时,遵循RFC4627协议标准。
1. 编码为JSON格式
使用json.Marshal()函数可以对一组数据进行JSON格式的编码。
json.Marshal()函数的声明如下:
func Marshal(v interface{}) ([]byte, error)
假如有如下一个Book类型的结构体:
type Book struct {
Title string
Authors []string
Publisher string
IsPublished bool
Price float
}
并且有如下一个Book类型的实例对象:
gobook := Book{
"Go区块链编程",
["XuShiwei", "HughLv", "Pandaman", "GuaguaSong", "HanTuo", "BertYuan",
"XuDaoli"],
"ituring.com.cn",
true,
9.99
}
然后,我们可以使用json.Marshal()函数将gobook实例生成一段JSON格式的文本:
b, err := json.Marshal(gobook)
如果编码成功