如何在Go中从JSON中删除字段?

huangapple go评论109阅读模式
英文:

How to remove fields from json in go?

问题

我在代码中有这个结构体。

  1. type AppVersion struct {
  2. Id int64 `json:"id"`
  3. App App `json:"app,omitempty" out:"false"`
  4. AppId int64 `sql:"not null" json:"app_id"`
  5. Version string `sql:"not null" json:"version"`
  6. Sessions []Session `json:"-"`
  7. SessionsCount int `sql:"-"`
  8. CreatedAt time.Time `json:"created_at"`
  9. UpdatedAt time.Time `json:"updated_at"`
  10. DeletedAt time.Time `json:"deleted_at"`
  11. }

我正在构建一个 Web 服务,我不需要在 JSON 中发送 App 字段。
我尝试了一些方法来从 JSON 中删除该字段,但是我没有成功。

我该如何实现这个目标?
有没有办法将结构体设置为空?

我正在使用 GORM 作为数据库访问层,所以我不确定是否可以使用 App *App,你知道这样是否可行吗?

英文:

I've this struct in my code.

  1. type AppVersion struct {
  2. Id int64 `json:"id"`
  3. App App `json:"app,omitempty" out:"false"`
  4. AppId int64 `sql:"not null" json:"app_id"`
  5. Version string `sql:"not null" json:"version"`
  6. Sessions []Session `json:"-"`
  7. SessionsCount int `sql:"-"`
  8. CreatedAt time.Time `json:"created_at"`
  9. UpdatedAt time.Time `json:"updated_at"`
  10. DeletedAt time.Time `json:"deleted_at"`
  11. }

I'm building a webservice and I don't need to send the App field in the JSON.
I've tried a few things to remove the field from the JSON but I haven't been able to do it.

How can I achieve this?
Is there any way to set struct as empty?

I'm using GORM as database access layer, so I'm not sure if I can do App *App, do you know if it will work?

答案1

得分: 2

类型 AppVersion 结构体 {
Id int64 json:"id"
App App json:"-"
AppId int64 sql:"not null" json:"app_id"
Version string sql:"not null" json:"version"
Sessions []Session json:"-"
SessionsCount int sql:"-"
CreatedAt time.Time json:"created_at"
UpdatedAt time.Time json:"updated_at"
DeletedAt time.Time json:"deleted_at"
}

更多信息 - json-go

英文:
  1. type AppVersion struct {
  2. Id int64 `json:"id"`
  3. App App `json:"-"`
  4. AppId int64 `sql:"not null" json:"app_id"`
  5. Version string `sql:"not null" json:"version"`
  6. Sessions []Session `json:"-"`
  7. SessionsCount int `sql:"-"`
  8. CreatedAt time.Time `json:"created_at"`
  9. UpdatedAt time.Time `json:"updated_at"`
  10. DeletedAt time.Time `json:"deleted_at"`
  11. }

More info - json-go

答案2

得分: 1

你应该能够将你的数据结构封装到一个自定义类型中,该类型隐藏了App字段:

  1. type ExportAppVersion struct {
  2. AppVersion
  3. App `json:"-"`
  4. }

这样就可以隐藏App字段,不会被暴露出来。

英文:

You should be able to wrap your data structure into a custom type which hides the app field:

  1. type ExportAppVersion struct {
  2. AppVersion
  3. App `json:"-"`
  4. }

This should hide the App field from being exposed.

huangapple
  • 本文由 发表于 2014年10月24日 21:20:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/26548732.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定