我向服务器发布请求并获得 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 编码包,支持多个标签键(例如json1
, json2
)或同一键的多次出现(如您的示例中所示)。

茅侃侃
TA贡献1842条经验 获得超22个赞
但是,对于 2 个布局相同的结构(字段的名称、类型和顺序需要完全匹配),有可能从一个转换到另一个。不过,我会非常谨慎地这样做,并确保未导出第二种类型(在您的示例中为 bar)以防止在其他地方使用。
https://play.golang.org/p/y8EH1U9_3jN
- 2 回答
- 0 关注
- 249 浏览
添加回答
举报
0/150
提交
取消