我有一个名为Person
的Golang结构,其中所有属性都必须导出:
type Person struct {
Id string
Name string
}
现在我需要将MongoDB BSON响应编码为此Person
结构。 BSON看起来像:
{
"_id": "ajshJSH78N",
"Name": "Athavan Kanapuli"
}
用于编码BSON的Golang代码是:
mongoRecord := Person{}
c := response.session.DB("mydb").C("users")
err := c.Find(bson.M{"username": Credentials.Username, "password": Credentials.Password}).One(&mongoRecord)
问题:
_id
未编入Id
Person
属性更改为_Id
,则不会将其导出。我该如何解决这个问题?
答案 0 :(得分:1)
使用json
标记 -
type Person struct {
Id string `json:"_id"`
Name string // this field match with json, so mapping not need
}
答案 1 :(得分:0)
我试着把json标签放在
上面type Person struct {
Id string `json:"_id"`
Name string // this field match with json, so mapping not need
}
但它仍然没有用。因为Mongodb返回类型为bson.ObjectId的'_id'。因此,将Struct标记更改为bson:"_id"
,并且Person结构的类型已从字符串更改为bson.ObjectId。完成的更改如下,
type Person struct {
Id bson.ObjectId `bson:"_id"`
Name string
UserName string
IsAdmin bool
IsApprover bool
}
它有效!