# #mongodb #go #struct
Вопрос:
Формат bson:
{
name: "root",
sports:" Cricket",
Personal: {
age:32
}
}
Формат структуры Go:
type Person struct {
Name string `bson:"name"`
Age int `bson:"age"`
}
Как привязать значение возраста к этому формату структуры в golang?
Ответ №1:
Вам нужен промежуточный тип, который поможет вам преобразовать вашу базу данных DTO (Объект преобразования данных) в объект модели. Рекомендуется разделить эти два.
package main
import (
"encoding/json"
"fmt"
)
type PersonInfoDto struct {
Age int `json:"age"`
}
type PersonDto struct {
Name string `json:"name"`
Sports string `json:"sports"`
Personal PersonInfoDto `json:"Personal"`
}
type Person struct {
Name string
Age int
}
func main() {
jsonInput := "{ "name": "root", "sports": "Cricket", "Personal": { "age": 32 }}"
var dto PersonDto
err := json.Unmarshal([]byte(jsonInput), amp;dto)
if err != nil {
fmt.Println(err)
}
// your model object
p := Person{dto.Name, dto.Personal.Age}
fmt.Println(p)
}
Комментарии:
1. Спасибо, это сработает. У меня было еще одно маленькое сомнение. Что делать, если запрошенный формат изменился после того, как он перешел в производство? До этого realese документы были без вложенных документов, и после этого realese они будут вложенными. Как справиться с этим сценарием?
2. Вместо того, чтобы преобразовывать ответ в определенную структуру, вы можете сохранить его в карте (пары ключ-значение) и решить в своем приложении, что делать, если определенные поля существуют или нет.