JSON是一种轻量级的文本数据格式,这种格式主要设计理念是既能够轻易被人类读懂,又能够简单地被机器读取。JSON在web应用数据传输非常常见。使用包encoding/json进行创建和解析。
package main
import (
"encoding/json"
"fmt"
"log"
)
type Person struct {
Name string `json:"name,omitempty"`
Age int `json:"age,omitempty"`
}
func main() {
p := Person{
Name: "George",
Age: 40,
}
fmt.Printf("%+v\n", p)
jsonByteData, err := json.Marshal(p)
if err != nil {
log.Fatal(err)
}
jsonStringData := string(jsonByteData)
fmt.Println(jsonStringData)
byteData := []byte(jsonStringData)
aa := Person{}
err1 := json.Unmarshal(byteData, &aa)
if err1 != nil {
log.Fatal(err1)
}
fmt.Printf("%+v\n", aa)
}
使用json.Marshal(p)把结构体转换成json格式,json.Unmarshal(byteData, &aa)把json格式转换成对应的结构体。
由于结构体的字段一般开头是大写,如果转换成json需要是小写时,需要添加`json:"name,omitempty"`,omitempty表示如果这个name是空字符串,转换json时就不包含name了。