#Json编码解码
package main
import (
"encoding/json"
"fmt"
)
//通过结构体生成json串,结构体成员名首字母必须大写
type Stu struct{
Name string //`json:"-"` //不会打印到屏幕
Age int `json:"age"` //二次编码,json串里,key为"age"
Course []string
Grade byte
Flg bool `json:",string"` //转为字符串"true"
}
func main() {
//json编码
//通过结构体生成json
s := Stu{"Amy",18,[]string{"math","english"},'A',true}
slice,err := json.Marshal(s)
if nil == err{
fmt.Println(string(slice))
}
slice,err = json.MarshalIndent(s,""," ")
if nil == err{
fmt.Println(string(slice))
}
//通过map生成json
m := make(map[string]interface{})
m["name"] = "Tom"
m["age"] = 18
m["Course"] = []string{"math","english"}
slice,err = json.Marshal(s)
if nil == err{
fmt.Println(string(slice))
}
//json解码
jstr := `
{
"Name": "Amy",
"age": 18,
"Course": [
"math",
"english"
],
"Grade": 65,
"Flg": "true"
}
` //原始字符串
//解析json到结构体
var st Stu
err = json.Unmarshal([]byte(jstr),&st)
if err == nil{
fmt.Println(st)
}
//解析json到map
}