gorm/gen 如何在自动生成时给json添加omitempty.实在找不到答案,故来询问。

1. 运行环境

go version go1.23.2 darwin/amd64

2. 问题描述?

users, total, err := u.Select(u.ID, u.Username).FindByPage(offset, pageSize)
返回数据user中 除了id和username外,其他数据也存在在json数据中,并且为默认值。

google之后的结果是需要在json后面添加 omitempty 关键字。
但是gorm/gen 我搜索之后的结果没有找到一个在生成的时候就在json添加关键字的方法。

故发帖询问🙋

3. 您期望得到的结果?

我希望生成的字段的json中可以自带 omitempty 关键字

4. 您实际得到的结果?

最佳答案

file

gen.FieldNewTagWithNS("json", func(columnName string) string {
            return columnName + ",omitempty"
        })

亲测有效

2个月前 评论
wlfpanda1012 (楼主) 2个月前
讨论数量: 3

file

gen.FieldNewTagWithNS("json", func(columnName string) string {
            return columnName + ",omitempty"
        })

亲测有效

2个月前 评论
wlfpanda1012 (楼主) 2个月前
// 自定义 json 标签, 用于生成模型结构体的字段 例如: `json:"created_at,omitempty"`
autoCreatedAtField := gen.FieldJSONTag("created_at", "created_at,omitempty")
fieldOpts := []gen.ModelOpt{
    autoCreatedAtField,
}
for _, table := range tables {
    g.GenerateModel(table, fieldOpts...)
}
1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!