JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。易于人阅读和编写。同时也
易于机器解析和生成。
RESTfull Api
接口中返回的数据都是
json
数据。
结构体与
JSON
序列化
Golang JSON
序列化
是指把结构体数据转化成
JSON
格式的字符串,
Golang JSON
的反序列化
是指把
JSON
数据转化成
Golang
中的结构体对象
Golang
中 的 序 列 化 和 反 序 列 化 主 要 通 过
"encoding/json"
包 中 的
json.Marshal()
和
json.Unmarshal()
方法实现
结构体对象转化成
Json
字符串
package main
import ( "encoding/json" "fmt" )
type Student struct {
ID int
Gender string
name string //私有属性不能被 json 包访问
Sno string
}
func main() {
var s1 = Student{ ID: 1, Gender: "男", Name: "李四", Sno: "s0001", }
fmt.Printf("%#v\n", s1)
var s, _ = json.Marshal(s1)
jsonStr := string(s)
fmt.Println(jsonStr)
}
Json
字符串转换成结构体对象
package main
import ( "encoding/json" "fmt" )
type Student struct {
ID int
Gender string
Name string
Sno string
}
func main() {
// var jsonStr = "{\"ID\":1,\"Gender\":\"男\",\"Name\":\"李四\",\"Sno\":\"s0001\"}" var jsonStr = `{"ID":1,"Gender":"男","Name":"李四","Sno":"s0001"}`
//定义一个 Monster 实例
var student Student
err := json.Unmarshal([]byte(jsonStr), &student)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 student=%#v student.Name=%v \n", student, student.Name) }