json.Marshal 如何去除 interface{}外层的”[]”
資深大佬 : jowan 3
数据结构 1
type User struct { Name string `json:"name"` Age int `json:"age"` } user1 := User{ Name: "zhangsan", Age: 18, } user2 := User{ Name: "lisi", Age: 20, } arr1 := []User{user1, user2}
数据结构 2
arr2 := []int{1, 2, 3, 4, 5}
封装返回
type JsonResponse struct { Code int `json:"code"` Data interface{} `json:"data,omitempty"` } str, _ := json.Marshal(JsonResponse{ Code: code, Message: message, Data: data, })
数据结构 1 期待返回的结果是
{ "code": 0, "data": [1, 2, 3, 4, 5] }
实际返回的是
{ "code": 0, "data": [[1, 2, 3, 4, 5]] }
数据结构 2 期待返回的结果是
{ "code": 0, "data": [ {"name": "zhangsan", "age": 18}, {"name": "lisi", "age": 20} ] }
实际返回的结果是
{ "code": 0, "data": [ [ { "name": "zhangsan", "age": 18 }, { "name": "lisi", "age": 20 } ] ] }
data 外面都会套一层[]
但是 data 数据类型又不是固定的 所以用到了 interface{}
刚接触 go 对 json 处理不太熟悉 还请各位大佬指导
大佬有話說 (6)