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

Go struct 字段与标签的转换

Go struct 字段与标签的转换

Go
ibeautiful 2021-10-25 20:08:45
我真的被 Go 中一个看似微不足道的问题困在这里:我有一个 Golang 微服务,它以 json 格式输出数据。假设我有一个带有 json 标签的简单结构用于这个结果:type Result struct {    Name string `json:"name"`    Age int `json:"age"`}在实际从数据库中提取数据的代码部分,我有一个非常相似的结构,如下所示:type ResultBackend struct {    Name string `bson:"fullName"`    Age int `bson:"age"`}除了不同的标签之外,结构体字段是相似的。我想保持简单,只从后端服务 (ResultBackend) 返回一个结构,然后可以将其作为 JSON 响应发送,如下所示:func process() Result {    var result ResultBackend    ... do a MongoDB query here and store results in result variable ...    return result}这当然行不通,因为我们这里有两个不同的结构。当然,一种解决方案是将两个标签嵌入到一个结构中,如下所示:type Result struct {    Name string `json:"name" bson:"fullName"`    Age int `json:"age bson:"age"`}然后在主代码和“处理”函数中使用这个结构。这是有效的,但这似乎是用 bson 标签“毒化”了主代码的 Result 结构。例如,如果后端结果是 XML 文件,该怎么办?我还必须将 xml 标记添加到结构中。或者也许有一天标记一些非常晦涩的数据库适配器。在我看来,这似乎不是最干净的方法。我宁愿在主代码中有一个干净的 Result 结构,并且只是从一个结构到另一个结构的转换。有什么简单的方法可以做到这一点,还是我真的必须将 ResultBackend 结构的所有字段复制到新的 Result 结构并返回它?或者我试图在这里过度简化我的代码?:)
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信