序列化
package main import ( "encoding/json" "fmt" ) type User struct { Name string `json:"用户名"`//反射机制 Age int `json:"年龄"` Sex string `json:"性别"` } func json_Struct() { u:=User{"Jack",23,"男"} data,err:=json.Marshal(&u) if err!=nil{ fmt.Println("出错!") return } fmt.Printf("序列化后=%v ", string(data)) } func json_Map(){ mp:=map[string]int{ "Jack":21, "Amy":23, "David":89, } data,err:=json.Marshal(&mp) if err!=nil{ fmt.Println("出错!") } fmt.Println(string(data)) } func json_Slice(){ arr:=[]map[string]interface{}{ {"jack":21},{"tom":23},{"Mg":24}, } data,err:=json.Marshal(&arr) if err!=nil{ fmt.Println("出错!") } fmt.Println(string(data)) } func main() { json_Struct() json_Map() json_Slice() arr:=[...]int{1,2,3,4} data,err:=json.Marshal(&arr) if err!=nil{ fmt.Println("出错!") } fmt.Println(string(data)) }
反序列化
package main import ( "fmt" "encoding/json" ) //定义一个结构体 type Monster struct { Name string Age int Birthday string //.... Sal float64 Skill string } //演示将 json 字符串,反序列化成 struct func unmarshalStruct() { //说明 str 在项目开发中,是通过网络传输获取到.. 或者是读取文件获取到 str := "{"Name":"牛魔王","Age":500,"Birthday":"2011-11-11","Sal":8000,"Skill":"牛魔拳"}" //定义一个 Monster 实例 var monster Monster err := json.Unmarshal([]byte(str), &monster) if err != nil { fmt.Printf("unmarshal err=%v ", err) } fmt.Printf("反序列化后 monster=%v monster.Name=%v ", monster, monster.Name) } //演示将 json 字符串,反序列化成 map func unmarshalMap() { str := "{"address":"洪崖洞","age":30,"name":"红孩儿"}" //定义一个 map var a map[string]interface{} //反序列化 //注意:反序列化 map,不需要 make,因为 make 操作被封装到 Unmarshal 函数 err := json.Unmarshal([]byte(str), &a) if err != nil { fmt.Printf("unmarshal err=%v ", err) } fmt.Printf("反序列化后 a=%v ", a) } //演示将 json 字符串,反序列化成切片 func unmarshalSlice() { str := "[{"address":"北京","age":"7","name":"jack"}," + "{"address":["墨西哥","夏威夷"],"age":"20","name":"tom"}]" //定义一个 slice var slice []map[string]interface{} //反序列化,不需要 make,因为 make 操作被封装到 Unmarshal 函数 err := json.Unmarshal([]byte(str), &slice) if err != nil { fmt.Printf("unmarshal err=%v ", err) } fmt.Printf("反序列化后 slice=%v ", slice) } func main() { unmarshalStruct() unmarshalMap() unmarshalSlice() }