登录
首页 >  Golang >  Go问答

GORM JSON 响应中字段的省略

来源:stackoverflow

时间:2024-02-23 10:21:26 316浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《GORM JSON 响应中字段的省略》,聊聊,我们一起来看看吧!

问题内容

我想省略 json 响应中的一些字段。 目前我有一个类型接收器,它返回一个新的结构 usertojson。 然后我将其传递给 json.newencoder()。不过我想知道这是否是使用 gorm 省略字段的最佳方法。

先谢谢你了!

package server

import (
    "gorm.io/gorm"
)

type User struct {
    gorm.Model
    FirstName string `gorm:"not null;default:null"`
    LastName  string `gorm:"not null;default:null"`
    Email     string `gorm:"not null;default:null;unique"`
    Password  string `gorm:"not null;default:null"`
    Posts     []Posts
}
type userToJson struct {
    Email string
    Posts []Posts
}

func (u *User) toJson() userToJson {
    return userToJson{
        Email: u.Email,
        Posts: u.Posts,
    }
}

正确答案


另一种方法是为您的类型实现接口 marshaler 来修改编组到 json 的工作方式。 json 包在封送之前检查该接口,如果存在,则调用该函数。这是标准库中的接口。

type marshaler interface {
    marshaljson() ([]byte, error)
}

user 类型的一个示例实现如下。

func (u *user) marshaljson() ([]byte, error) {
    type temp struct {
        email string
        posts []post
    }

    t := temp{
        email: u.email,
        posts: u.posts,
    }
    return json.marshal(&t)
}

您应该为所有字段声明带有 json 标记的结构,behrooz 在评论中建议的内容应该可以正常工作

type User struct {
    gorm.Model
    FirstName string `json:"-" gorm:"not null;default:null"`
    LastName  string `json:"-" gorm:"not null;default:null"`
    Email     string `json:"email" gorm:"not null;default:null;unique"`
    Password  string `json:"-" gorm:"not null;default:null"`
    Posts     []Posts`json:"posts"`
}

今天关于《GORM JSON 响应中字段的省略》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>