1. 序列化 json.Marshal(v interface{}) ([]byte, error)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 type Person struct { Name string `json:"name"` Age byte `json:"age"` Birthday string `json:"birthday"` Salary float64 `json:"salary"` Occupation string `json:"occupation"` } func main () { serializeStruct() serializeMap() serializeSlice() } func serializeStruct () { p := Person{ Name: "张三" , Age: 45 , Birthday: "1975-05-01" , Salary: 32000.0 , Occupation: "电气工程师" , } data, err := json.Marshal(&p) if err != nil { fmt.Println(err) } fmt.Println(string (data)) } func serializeMap () { var m map [string ]interface {} m = make (map [string ]interface {}) m["name" ] = "李四" m["age" ] = 30 m["city" ] = "北京市" data, err := json.Marshal(m) if err != nil { fmt.Println(err) } fmt.Println(string (data)) } func serializeSlice () { var s []map [string ]interface {} m1 := make (map [string ]interface {}) m1["name" ] = "Tom" m1["age" ] = 17 m1["city" ] = "Los Angles" m2 := make (map [string ]interface {}) m2["name" ] = "Julie" m2["age" ] = 21 m2["city" ] = "New York" s = append (s, m1, m2) data, err := json.Marshal(s) if err != nil { fmt.Println(err) } fmt.Println(string (data)) }
2. 反序列化 json.Unmarshal(data []byte, v interface{}) error
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 type Person struct { Name string `json:"name"` Age byte `json:"age"` Birthday string `json:"birthday"` Salary float64 `json:"salary"` Occupation string `json:"occupation"` } func main () { deserializeStruct() deserializeMap() deserializeSlice() } func deserializeStruct () { js := `{"name":"张三","age":45,"birthday":"1975-05-01","salary":32000,"occupation":"电气工程师"}` var p Person err := json.Unmarshal([]byte (js), &p) if err != nil { fmt.Println(err) } fmt.Println(p) } func deserializeMap () { js := `{"age":30,"city":"北京市","name":"李四"}` var m map [string ]interface {} err := json.Unmarshal([]byte (js), &m) if err != nil { fmt.Println(err) } fmt.Println(m) } func deserializeSlice () { js := `[{"age":17,"city":"Los Angles","name":"Tom"},{"age":21,"city":"New York","name":"Julie"}]` var s []map [string ]interface {} err := json.Unmarshal([]byte (js), &s) if err != nil { fmt.Println(err) } fmt.Println(s) }