
数据结构 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 处理不太熟悉 还请各位大佬指导
1 awm47 2021-02-10 10:24:46 +08:00 代码不全,应该是自己代码的问题,可以看以下例子。 ```go package main import ( "encoding/json" "fmt" ) type JsonResponse struct { Code int `json:"code"` Data interface{} `json:"data,omitempty"` } func main() { data := []int{1, 2, 3, 4, 5} bs, _ := json.Marshal(JsonResponse{ Code: 0, Data: data, }) // {"code":0,"data":[1,2,3,4,5]} fmt.Printf("%s", bs) } ``` 话说直接断点调试下不就知道数据对不对了 |
2 daimazha 2021-02-10 10:30:25 +08:00 写个完整点的代码可以吗? 你现在的代码应该跟你预期的是一样的 |
3 jowan OP 谢谢 测试 你这样确实没问题 但是我这边 还有一个方法 调用 FormatJson() 这样就会多一层[] ``` func FormatJson(code int, data interface{}) { str, _ : = json.Marshal(JsonResponse{ Code: code, Data: data, }) } ``` |
5 march1993 2021-02-10 11:49:33 +08:00 via iPhone data 定义呢 |
6 6IbA2bj5ip3tK49j 2021-02-10 15:53:26 +08:00 写个最小复现的 demo 吧。压根不存在你问的问题。 |