数据结构 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
jaynos 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 吧。压根不存在你问的问题。
|