gpt4 book ai didi

go - 如何在 Golang 中响应所有字段包含带有标签 omitempty 的字段?

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

在我的网络服务中,我有一个模型:

// Comment struct
type Comment struct {
Owner UserObject `json:"owner"`
ID int64 `json:"id"`
Message string `json:"message"`
Mentions []MentionObject `json:"mentions,omitempty"`
CreatedAt int64 `json:"created_at,omitempty"`
UpdatedAt int64 `json:"updated_at,omitempty"`
Status int `json:"status,omitempty"`
CanEdit bool `json:"can_edit"`
CanDelete bool `json:"can_delete"`
}


// UserObject struct
type UserObject struct {
ID int64 `json:"id"`
Username string `json:"username"`
FullName string `json:"full_name"`
Avatar string `json:"avatar"`
}

// MentionObject struct
type MentionObject struct {
ID int64 `json:"id"`
Length int64 `json:"length"`
Offset int64 `json:"offset"`
}

我已经使用 gin gonic 进行路由

routes.GET("/user", func(c *gin.Context) {
c.JSON(200, Comment{})
})

我需要返回这个结构的所有字段,我知道它会响应一个 json:

{
"owner": {
"id": 0,
"username": "",
"full_name": "",
"avatar": ""
},
"id": 0,
"message": "",
"can_report": false,
"can_edit": false,
"can_delete": false
}

我知道这是对的,但我仍然希望得到所有领域的回应。如何做到这一点?

最佳答案

如果你不想从标签中删除 omitempty 值,因为你需要它用于其他目的,你可以在 Go 1.8+ 上定义一个新的 type 与您要序列化的类型相同,但没有 omitempty 标记值,然后只需将值从旧类型转换为新类型即可。

Here's an example of the 1.8+ "tag ignoring" type conversion

您还可以定义一个新类型,原始类型中省略的那些字段,然后将原始类型嵌入到新类型中like so .

关于go - 如何在 Golang 中响应所有字段包含带有标签 omitempty 的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44180847/

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