【发布时间】:2022-02-18 19:16:53
【问题描述】:
我有一个业务对象,它有一个字符串“代码”,它需要保存在我们 MongoDB 的文档中。当从 MongoDB 获取文档时,我需要将代码转换为我们的 ClientCode 业务对象。
所以,更详细地说:
BUSINESS OBJECTS - simplified
type ClientCode struct {
Code string `bson:"code" json:"code"`
}
type Project struct {
Name string `bson:"name" json:"name"`
Code ClientCode `bson:"clientCode" json:"clientCode"`
}
p := Project{
Name: "Abc",
Code: ClientCode{Code: "abccorp"}
}
我想注册一个转换器,将这个项目实例序列化为数据库集合:项目,
[
{
"name":"Abc",
"code":"abccorp"
}
]
我想注册一个转换器,将数据库中的项目文档反序列化为 Project 的一个实例。这个过程也必须反序列化 ClientCode 字段。
我无法在 MongoDB 的文档中找到有关为嵌入式 Go 结构实现自定义编码器/解码器的更多信息。我已经在基于 Kotlin 和 Spring Boot 的类似 webapi 服务中实现了自定义转换器。它使用注册的转换器并自动执行每个方向的转换。对于如何在 Go 中完成此任务的任何提示或建议,我将不胜感激。
感谢您的时间和兴趣, 迈克
【问题讨论】:
-
自定义编组/解组逻辑可以通过实现
bson.Marshaler和bson.Unmashaler接口来实现。
标签: mongodb go serialization deserialization bson