1. Резюме
JSON(JavaScript Object Notation)
Является облегченным форматом обмена данными, в настоящее время является основным форматом данных, широко используемымweb
Способ взаимодействия данных между фронтендом и бэкендом в разработке
Во-вторых, вgo
Несколько распространенных сериализаций вjson
Путь
-
1. Сериализировать структуру в
json
package main import ( "encoding/json" "fmt" ) type Student struct { Name string `json:"name"` // 姓名 Age int `json:"age"` // 年龄 Gender string `json:"gender"` // 性别 Score float64 `json:"score"` // 分数 Course []string `json:"course"` // 课程 } func main() { stu := Student{ "张三", 20, "男", 78.6, []string{"语文", "数学", "音乐"}, } fmt.Println(stu) data, err := json.Marshal(&stu) if err != nil { fmt.Println("序列化错误", err) } else { fmt.Println(string(data)) } } // 返回结果:{"name":"张三","age":20,"gender":"男","score":78.6,"course":["语文","数学","音乐"]}
-
2. будет
map
сериализовать вjson
package main import ( "encoding/json" "fmt" ) func main() { var map1 map[string]interface{} // 使用一个空接口表示可以是任意类型 map1 = make(map[string]interface{}) map1["name"] = "张三" map1["province"] = "广东省" map1["city"] = "深圳市" map1["salary"] = 1000 map1["hobby"] = [...]string{"看书", "旅游", "学习"} data, err := json.Marshal(map1) if err != nil { fmt.Println("序列化失败") } else { fmt.Println(string(data)) } }
-
3. Разделите сериализацию на
json
package main import ( "encoding/json" "fmt" ) func main() { var slice1 []map[string]interface{} var m1 map[string]interface{} m1 = make(map[string]interface{}) m1["name"] = "张三" m1["address"] = "广东省深圳市" slice1 = append(slice1, m1) var m2 map[string]interface{} m2 = make(map[string]interface{}) m2["name"] = "李四" m2["address"] = "广东省广州市" slice1 = append(slice1, m2) data, err := json.Marshal(slice1) if err != nil { fmt.Println("序列化错误") } else { fmt.Println(string(data)) } }
3. Десериализация (json
преобразовать вgo
Структура, которую может распознать код,map
,кусочек)
-
1,
json
десериализовать в структуруpackage main import ( "encoding/json" "fmt" ) type Student struct { Name string `json:"name"` // 姓名 Age int `json:"age"` // 年龄 Gender string `json:"gender"` // 性别 Score float64 `json:"score"` // 分数 Course []string `json:"course"` // 课程 } func main() { var stu Student str := `{"name":"张三","age":20,"gender":"男","score":78.6,"course":["语文","数学","音乐"]}` err := json.Unmarshal([]byte(str), &stu) if err != nil { fmt.Println("反序列化失败") } fmt.Println(stu) }
-
2,
json
десериализовать вmap
package main import ( "encoding/json" "fmt" ) func main() { var map1 map[string]interface{} // 使用一个空接口表示可以是任意类型 //map1 = make(map[string]interface{}) str := `{"city":"深圳市","hobby":["看书","旅游","学习"],"name":"张三","province":"广东省","salary":1000}` err := json.Unmarshal([]byte(str), &map1) if err != nil { fmt.Println("反序列化失败", err) } fmt.Println(map1) }
-
3. Десериализация среза
package main import ( "encoding/json" "fmt" ) func main() { var slice []map[string]interface{} str := `[{"address":"广东省深圳市","name":"张三"},{"address":"广东省广州市","name":"李四"}]` err := json.Unmarshal([]byte(str), &slice) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化后 slice=%v\n", slice) }