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