我使用的格姆(g ^ ō ORM)来检索从我的数据库将在JSON编码数据。Gorm 为主键和时间跟踪提供了一个默认结构,其 DeletedAt 属性不应在 JSON 中编码。我写了一个小例子,它不输出密码,但 DeletedAt 属性仍然可见。package mainimport ( "encoding/json" "fmt" "os" "github.com/jinzhu/gorm" _ "github.com/lib/pq" _ "github.com/mattn/go-sqlite3")// Struct from the gorm package://// type Model struct {// ID uint `gorm:"primary_key"`// CreatedAt time.Time// UpdatedAt time.Time// DeletedAt *time.Time// }// Defines the database model for gorntype User struct { gorm.Model Username string `json:"username" sql:"size:32; not null; unique"` Password string `json:"password" sql:"not null"` Locale string `json:"locale" sql:"not null"`}// Public JSON version of database modeltype PublicUser struct { *User DeletedAt bool `json:"deletedAt,omitempty"` Password bool `json:"password,omitempty"`}func main() { db, err := gorm.Open("sqlite3", "storage.db") if err != nil { fmt.Println(err) } u := &User{} db.Where("id = ?", 3).Find(&u) json.NewEncoder(os.Stdout).Encode(PublicUser{ User: u, })}如果我运行我的脚本,这是我得到的输出:{ "ID":3, "CreatedAt":"2015-05-13T14:54:23.5577227Z", "UpdatedAt":"2015-05-13T14:54:23.5577227Z", "DeletedAt":null, "username":"dan", "locale":"en_US"}我修改了Alfred Rossi的例子来模仿行为,我得到了相同的结果。
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
您可以使用设置为 false 的 bool 来遮蔽该字段并使用 omitempty
例如
type User struct {
Username string `json:"username"`
DeletedAt int `json:"deleted_at"`
}
type PublicUser struct {
*User
DeletedAt bool `json:"deleted_at,omitempty"`
}
- 1 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消