我真的被 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
提交
取消