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)

Эта проблема:

  1. _id не кодируется в Id
  2. Если я изменю 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
}

И это работает!

Другие вопросы по тегам