Go语言 如何从handler返回不同的结构体以获得成功和错误响应

nnsrf1az  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(92)

我的main中有下面的代码。go

app.Post("/user", util.ValidateJson[model.User], func(c *fiber.Ctx) error {
    user := new(model.User)
    _ = c.BodyParser(&user)
    return c.Status(fiber.StatusCreated).JSON(model.Response{
        Data:   model.ToMap(*user)})
})

和响应结构

type Response struct {
    Data   fiber.Map    `json:"data"`
    Errors []*ErrorList `json:"errors"`
}

我遇到的问题是响应返回空的错误列表,这是我想避免的。

{
    "data": {
        "age": 1,
        "name": "ben"
    },
    "errors": null
}
db2dz4w8

db2dz4w81#

在响应结构声明中使用omitempty标记。omitempty标签是一个结构字段标签,用于Go的encoding/json包中,用于控制JSON序列化的行为。当您将omitempty标记应用于结构中的字段时,它指示如果该字段的值为空或值为零,则应该从JSON表示中省略该字段。

type Response struct {
    Data   fiber.Map    `json:"data"`
    Errors []*ErrorList `json:"errors,omitempty"` // Use the "omitempty" tag
}

相关问题