为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以有一个带有多个 JSON 标签的结构?

是否可以有一个带有多个 JSON 标签的结构?

Go
森林海 2022-01-10 14:37:24
我向服务器发布请求并获得 JSON 格式的回复。我能够将其解组为结构。然后我需要创建一个新的 JSON 文件,它具有相同的数据但不同的 JSON 标签。例子:在以下代码中,我{"name":"Sam","age":20}从服务器获取并将其解组到 struct Foo:type Foo struct {    Name string `json:"name"`    Age  int    `json:"age"`}然后我需要将标签更改name为employee_name并省略age:type Bar struct {    Name string `json:"employee_name"`    Age  int    `json:"-"`}之后,我将此修改后的数据发送到另一台服务器。我知道我可以创建一个新的Bar并将所有数据复制到其中,但是有很多字段。我想知道是否有办法像这样附加多个 JSON 标签:type Foo struct {    Name string `json:"name" json:"employee_name"`    Age  int    `json:"age" json:"-"`}        提前致谢。
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

这是不可能的。该encoding/json包仅处理json结构标记中的键。如果json键被多次列出(如您的示例中),将使用第一次出现(这在 中实现StructTag.Get())。

请注意,这是encoding/json包的实现限制,而不是 Go 的限制。可以轻松创建一个类似的 JSON 编码包,支持多个标签键(例如json1json2)或同一键的多次出现(如您的示例中所示)。


查看完整回答
反对 回复 2022-01-10
?
茅侃侃

TA贡献1842条经验 获得超22个赞

但是,对于 2 个布局相同的结构(字段的名称、类型和顺序需要完全匹配),有可能从一个转换到另一个。不过,我会非常谨慎地这样做,并确保未导出第二种类型(在您的示例中为 bar)以防止在其他地方使用。

https://play.golang.org/p/y8EH1U9_3jN


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号