英文:
How to map the nested field in a collection to go struct that is not nested in format?
问题
在Golang中,可以使用bson
标签将age
的值绑定到结构体格式中。以下是如何在Golang中将age
的值绑定到结构体格式的示例代码:
type Person struct {
Name string `bson:"name"`
Age int `bson:"age"`
}
func main() {
bsonData := bson.M{
"name": "root",
"sports": "Cricket",
"Personal": bson.M{
"age": 32,
},
}
var person Person
err := bson.Unmarshal(bsonData, &person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
}
在上面的示例中,我们使用bson.Unmarshal
函数将bsonData
中的值绑定到Person
结构体中的字段。通过指定bson
标签,我们告诉Golang如何将age
的值绑定到Age
字段。最后,我们可以通过访问person.Age
来获取绑定后的值。
英文:
Format of bson:
{
name: "root",
sports:" Cricket",
Personal: {
age:32
}
}
Go struct format:
type Person struct {
Name string `bson:"name"`
Age int `bson:"age"`
}
How to bind the value of age into this struct format in golang?
答案1
得分: 0
你需要一个中间类型,它将帮助你将数据库的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), &dto)
if err != nil {
fmt.Println(err)
}
// 你的模型对象
p := Person{dto.Name, dto.Personal.Age}
fmt.Println(p)
}
英文:
You need an intermediate type that will help you transform your database DTO (Data Transform Object) into model object. It is recommended to separate those two.
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), &dto)
if err != nil {
fmt.Println(err)
}
// your model object
p := Person{dto.Name, dto.Personal.Age}
fmt.Println(p)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论