Golang Расшифровать BSON со специальными символами Ключи к структуре
У меня есть структура Golang под названием Person
где все свойства должны быть экспортированы:
type Person struct {
Id string
Name string
}
Теперь мне нужно закодировать мой ответ BSON MongoDB на это Person
структура. BSON выглядит так:
{
"_id": "ajshJSH78N",
"Name": "Athavan Kanapuli"
}
Код Голанга для кодирования BSON:
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
тогда он не будет экспортирован.
Как я могу решить эту проблему?
2 ответа
Определите вашу структуру с json
тег-
type Person struct {
Id string `json:"_id"`
Name string // this field match with json, so mapping not need
}
Я пытался поставить тег JSON, как,
type Person struct {
Id string `json:"_id"`
Name string // this field match with json, so mapping not need
}
Но все равно это не сработало. Потому что Mongodb возвращает _id, который имеет тип bson.ObjectId. Следовательно, изменив тег Struct на bson:"_id"
и тип структуры Person был изменен со строки на bson.ObjectId. Сделанные изменения заключаются в следующем,
type Person struct {
Id bson.ObjectId `bson:"_id"`
Name string
UserName string
IsAdmin bool
IsApprover bool
}
И это работает!