但是当查询返回没有结果的响应是null
-我怎么得到这是一个空数组[]
?
_, err := dbmap.Select(&response.DevTeam, "SELECT * FROM DevTeam WHERE app_id = ? LIMIT ? OFFSET ?", a_id, limit, offset)
无结果时的响应:
{
"data": null,
"meta": "success"
}
无结果时的期望响应:
{
"data": [],
"meta": "success"
}
仍然得到空-我的结构设置是:
type HttpResonse struct {
DevTeam []DevTeam `json:"data"`
}
我使用response.DevTeam = []models.DevTeam{}
如下所示,但仍然得到null
。
响应部分:
s.Count = int64(len(response.DevTeam))
c.JSON(httpcode, gin.H{"meta": s, "data": response.DevTeam})
切片类型为nil
的值编码为null
JSON 对象。非nil
空切片被封送到空数组[]
中。
在封送response
之前,请检查DevTeam
字段,如果是nil
,则显式设置一个长度为0
的分片值,例如:
if response.DevTeam == nil {
response.DevTeam = []models.DevTeam{}
}
或者,当您创建gin.H
包装时,如果response.DevTeam
等于nil
,则使用空切片而不是nil
。
看到这个简单的例子:
type Pt struct {
DevTeam []string
}
p := Pt{}
json.NewEncoder(os.Stdout).Encode(p)
p.DevTeam = []string{}
json.NewEncoder(os.Stdout).Encode(p)
输出(尝试在Go Playground):
{"DevTeam":null}
{"DevTeam":[]}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(67条)