gpt4 book ai didi

json - 返回空列表而不是 null

转载 作者:IT王子 更新时间:2023-10-29 02:26:55 55 4
gpt4 key购买 nike

我想更改当前函数以返回空 JSON 列表,目前它返回 nil

这是我当前的代码:

func (s *Service) projectsGet(c *gin.Context) {
var projects []*models.Project

user := getUser(c)
pag := models.NewPagination(c)

ps, err := s.db.ProjectsGet(user.ID, &pag)
if err != nil {
apiError(c, http.StatusInternalServerError, err)
return
}

projects = ps
c.JSON(http.StatusOK, projects)
}

我想让它返回[],我该怎么做?

最佳答案

nil slice 编码为 null JSON 对象。这记录在 json.Marshal() :

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON value.

如果您想要一个非null 的空 JSON 数组,请使用非nil 的空 Go slice 。

看这个例子:

type Project struct {
Name string `json:"name"`
}

enc := json.NewEncoder(os.Stdout)

var ps []*Project
enc.Encode(ps)

ps = []*Project{}
enc.Encode(ps)

输出(在 Go Playground 上尝试):

null
[]

因此,在您的情况下,请确保 projects 不是 nil,例如:

projects = ps
if projects == nil {
projects = []*models.Project{}
}

关于json - 返回空列表而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55063756/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com