在我们的代码库中,我们有一个合并两个结构的函数,如下所示。
func CombineStruct(s1 interface{}, s2 interface{}) error {
data, err := json.Marshal(s1)
if err != nil {
return err
}
return json.Unmarshal(data, s2)
}
我们使用上面的 func 来组合两个结构,如下所示。
m := model.SomeModel{}
CombineStruct(someStruct, &m)
//above line merges two structs
此外,目前我们所有的结构只有json标签bson还没有标签,我们是否需要bson在所有地方添加标签?
for ex :
type someStruct struct {
Field1 string `json:"field1"`
Field2 string `json:"field2"`
Field3 interface{} `json:"field2"`
}
在上面someStruct我们也有接口类型的字段!
现在我面临的问题是无论我们在哪里组合结构,我都会看到这些对象数据作为mongoDB一对数组,key-value如下所示:
"studentDetails" : [
{
"Key" : "Details",
"Value" : [
[
{
"Key" : "Name",
"Value" : "Bob"
},
{
"Value" : "21",
"Key" : "Age"
}
]
]
},
{
"Key" : "Enrolled",
"Value" : false
}
],
但我希望它像下面这样显示。不像key-value一对。
"studentDetails" : {
"Details" : [
{
"name" : "serverdr",
"age" : 21
},
{
"Enrolled" : false
}
],
它在我们旧的全局 sing mgo驱动程序中以上述方式显示对象。但是当我们使用函数 it作为键值对数组组合两个结构时,使用新的go-mongo驱动程序。CombineStruct()
displays
慕村225694
相关分类