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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| import ( "encoding/json" "fmt" )
// 反序列化 type User struct { UserName string `json:"username"` Age int `json:"age"` Sex string `json:"sex"` Phone string `json:"phone"` }
// 结构体转json func structForJson() (jsonStr string) { u := &User{ UserName: "root", Age: 18, Sex: "男", Phone: "13160000001", } j, err := json.Marshal(u) if err != nil { fmt.Printf("struct for json err:%v\n", err) return } jsonStr = string(j) return }
// json转结构体 func jsonForStruct() { var u User jsonStr := structForJson() err := json.Unmarshal([]byte(jsonStr), &u) if err != nil { fmt.Printf("json for struct err:%v\n", err) return } fmt.Printf("struct is %v\n", u) }
// map转json func mapForJson() (jsonStr string) { var m map[string]interface{} m = make(map[string]interface{}) m["username"] = "admin" m["age"] = 19 m["sex"] = "男" m["phone"] = "13770000000" mj, err := json.Marshal(m) if err != nil { fmt.Printf("map for json err:%v\n", err) return } jsonStr = string(mj) return }
// json转map func jsonForMap() { var m map[string]interface{} m = make(map[string]interface{}) jsonStr := mapForJson() err := json.Unmarshal([]byte(jsonStr), &m) if err != nil { fmt.Printf("json for map err:%v\n", err) return } fmt.Printf("map is %v\n", m) }
// slice转json func sliceForJson() (jsonStr string) { var l []*User u1 := &User{ UserName: "u1", Age: 18, Sex: "男", Phone: "110", } u2 := &User{ UserName: "u2", Age: 28, Sex: "男", Phone: "120", } l = append(l, u1) l = append(l, u2) lj, err := json.Marshal(l) if err != nil { fmt.Printf("slice for json err:%v\n", err) return } jsonStr = string(lj) return }
// json转slice func jsonForSlice() { var l []User var u1 User var u2 User l = append(l, u1) l = append(l, u2) jsonStr := sliceForJson() err := json.Unmarshal([]byte(jsonStr), &l) if err != nil { fmt.Printf("json for map err:%v\n", err) return } fmt.Printf("map is %v\n", l) }
func main() { jsonForStruct() jsonForMap() jsonForSlice() } ---------------------- struct is {root 18 男 13160000001} map is map[age:19 phone:13770000000 sex:男 username:admin] map is [{u1 18 男 110} {u2 28 男 120}]
|