Go 结构对象数组未在响应中获取返回
我的模型具有以下数据:Go 结构对象数组未在响应中获取返回,go,go-gin,golang-migrate,Go,Go Gin,Golang Migrate,我的模型具有以下数据: package main type Subject struct { name string `json:name` section int `json:section` } var subjects = map[string][]Subject{ "1001": []Subject{ { name: "Phy", sec
package main
type Subject struct {
name string `json:name`
section int `json:section`
}
var subjects = map[string][]Subject{
"1001": []Subject{
{
name: "Phy",
section: 1,
},
{
name: "Phy",
section: 2,
},
},
"1002": []Subject{
{
name: "Chem",
section: 1,
},
{
name: "Chem",
section: 2,
},
},
"1003": []Subject{
{
name: "Math",
section: 1,
},
{
name: "Math",
section: 2,
},
},
"1004": []Subject{
{
name: "Bio",
section: 1,
},
{
name: "Bio",
section: 2,
},
},
}
我创建的路线如下所示:
route.GET("/subjects/:id", func(c *gin.Context) {
id := c.Param("id")
subjects := subjects[id]
c.JSON(http.StatusOK, gin.H{
"StudentID": id,
"Subject": subjects,
})
})
它试图使用postman将其命名为:localhost:8080/subjects/1001
但它只显示{}{},而不是subject结构的对象数组
输出:
{
“学生ID”:“1001”,
“主题”:[
{},
{}
]
}这是因为您的
主题使用小写字段name
和部分
,因此不会序列化
将其更改为:
类型主题结构{
名称字符串`json:“名称”`
Section int`json:“Section”`
}
将显示以下字段:
{
"StudentID": "1001",
"Subject": [
{"name":"Phy","section":1},
{"name":"Phy","section":2}
]
}
您需要导出字段,以便json
包可以对其进行编码,例如Name
和Section
vsName
和Section
。如果您希望它们在响应中是小写的,那么可以使用json标记,例如名称字符串`json:`Name`
。由于您的标记,json中主题对象的键实际上是小写的。您是对的。这部分是我从他那里抄来的。把它写成json:name
似乎一点也不小写。我将按(假设)的预期方式编辑它。