解析嵌套类型示例:
func test3() {
b := []byte(`{"Name":"tom","Age":20,"Email":"tom@gmail.com", "Parents" : ["tom", "kite"]}`)
var f map[string]interface{}
json.Unmarshal(b, &f)
fmt.Printf("f: %v\n", f)
for k, v := range f {
fmt.Printf("k: %v\n", k)
fmt.Printf("v: %v\n", v)
}
}
创建json文件示例:
func test4() {
//定义一个结构体
type Person struct {
Name string
Age int
Email string
Parent []string
}
//结构体初始化
p := Person{
Name: "tom",
Age: 20,
Email: "tom@gmail.com",
Parent: []string{"big tom", "big kite"},
}
//打开a.json文件进行写入,如果没有此文件就创建一个,赋予权限777
f, _ := os.OpenFile("a.json", os.O_WRONLY|os.O_CREATE, 0777)
//在程序执行完成后,关闭文件
defer f.Close()
//创建这个文件writer对象的Encoder
e := json.NewEncoder(f)
//把结构体p的内容转换成json写入文件中
e.Encode(p)
}
打开json文件示例:
func test5() {
//打开a.json文件
f, _ := os.Open("a.json")
defer f.Close()
//创建这个文件Reader对象的Decoder
d := json.NewDecoder(f)
var v map[string]interface{}
//取出json文件里的内容并转换为map类型
d.Decode(&v)
fmt.Printf("v: %v\n", v)
}
将结构体转换成json:
func Marshal() {
p := Person{
Name: "tom",
Age: 20,
Email: "tom@gmail.com",
}
b, _ := json.Marshal(p)
fmt.Printf("string(b): %v\n", string(b))
}