来源:自学PHP网 时间:2019-08-07 16:43 作者:小飞侠 阅读:次
[导读] Go JSON编码与解码的实现...
在开发应用程序时,客户端(前端页面或APP)与服务端交互是在所难免的,在交互过程传递数据时,最通用和流行格式便是JSON,Go语言提供了encoding/json包,用于处理JSON数据的编码与解码。 除了JSON,XML也常用于前后端的数据交互,不过由于简洁性、可读性和流行程度,JSON用得更加广泛。 JSON简介 1. 什么是JSON? JSON全称为Javascript Object Notation,一种数据结构化交互的标准协议,易于阅读与编写,所以在数据交互时广泛使用。 2. JSON中的数据类型
下面的示例,是一个数组中包括两个对象。
3. JSON与GO结合 使用encoding/json处理JSON编码与解码时,就必须处理好JSON数据类型与Go语言数据类型的对应关系。
编码一个结构体时,结构体中只有首字母大写的成员才会被编码,首字母小写的成员会被忽略,另外,结构体中字段后面允许使用反引号声明成员的Tag,用于说明成员的元信息。 type Member struct { Id int `json:"id"` Username string `json:"username"` Sex uint `json:"gender"` Email string `json:"email"` } 上面的结构体Member中,我们定义了四个成员,并声明了每个成员的Tag信息, 其中Sex的Tag信息声明为gender,所以编码后的结果为:
编码 将Go语言的数据序列化为JSON字符串的操作,称为编码;编码后的结果为一个JSON格式的字符串。 1. json.Marshal函数 使用json.Marshal函数可以直接编码任意数据类型。 import ( "encoding/json" "fmt" ) func main() { members := []Member{ { Id:1, Username:"小明", Sex:1, Email:"xiaoming@163.com", }, { Id:2, Username:"小红", Sex:1, Email:"xiaohong@163.com", }, { Id:3, Username:"小华", Sex:2, Email:"xiaohua@163.com", }, } data,_ := json.Marshal(members) fmt.Printf("%s",data) } 运行结果:
2. json.Encoder json.Marshal实际上只是对json.Encoder的封装,因此使用json.Encoder同样可以编码JSON。 func main(){ b := &bytes.Buffer{} encoder := json.NewEncoder(b) err := encoder.Encode(members) if err != nil{ panic(err) } fmt.Println(b.String()) } 解码 将JSON字符串反序列化为Go相对应类型的作品,称为解码。 1. json.Unmarshal函数 json.Unmarshal与json.Marshal函数相反,用于解码JSON字符串。 func main() { str := `[ { "id": 1, "username": "小明", "gender": 1, "email": "xiaoming@163.com" }, { "id": 2, "username": "小红", "gender": 1, "email": "xiaohong@163.com" }, { "id": 3, "username": "小华", "gender": 2, "email": "xiaohua@163.com" } ]` b := bytes.NewBufferString(str) var members []Member err := json.Unmarshal(b.Bytes(),&members) if err != nil{ panic(err) } fmt.Println(members) } 运行结果:
2. json.Decoder func main(){ b := bytes.NewBufferString(str) var members []Member decoder := json.NewDecoder(b) err = decoder.Decode(&members) if err != nil{ panic(err) } fmt.Println(members) } 小结 Go语言中的encoding/json提供了对JSON数据的编码与解码的各种便捷的方法,我们只要直接使用便完成完成有关JSON的各种处理操作,非常简单方便。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学php网。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com