go_json_learn

解析嵌套类型示例:

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))
}

 

posted @ 2022-06-14 18:10  nLesxw  阅读(18)  评论(0编辑  收藏  举报