我在MySQL中有一张表,有3列,分别是Profile字符串、userInformation JSON和badge字符串。
Profile | userInformation | badge |
---|---|---|
https://ps.w.org/metronet-profile-picture/assets/icon-256x256.png?rev=2464419 | {"name": "Suzan Collins", "points": 10000, "countryName": "Poland"} | assets/batcherPage/gold.png |
这是我的结构:
type BatchersData struct {
ProfileURL string `json:"profileUrl"`
UserInformation UserInformation `json:"userInformation"`
Badge string `json:"badge"`
}
type UserInformation struct {
Points int64 `json:"points"`
Name string `json:"name"`
CountryName string `json:"countryName"`
}
我想要做的是在这个表上进行选择查询,即GET并检索每一个信息。
使用这段代码,我已经访问了Profile和Badge:
func getBatchers(c *gin.Context) {
var batchers []BatchersData
rows, err := db.Query("SELECT profileUrl, badge FROM Batchers_page_db")
if err != nil {
return
}
defer rows.Close()
for rows.Next() {
var batcher BatchersData
if err := rows.Scan(&batcher.ProfileURL, &batcher.Badge); err != nil {
return
}
batchers = append(batchers, batcher)
}
if err := rows.Err(); err != nil {
return
}
c.IndentedJSON(http.StatusOK, batchers)
}
但我也想访问 JSON 列即 UserInformation。我知道查询语句应该是
rows, err := db.Query("SELECT * FROM Batchers_page_db")
但我必须在这个陈述中进行修改。
if err := rows.Scan(&batcher.ProfileURL, &batcher.Badge);
我尝试过这样做:但是没有任何效果。
rows.Scan(&batcher.ProfileURL,&batcher.UserInformation, &batcher.Badge);
SELECT Profile, userInformation->>name AS name, userInformation->>points AS points, userInformation->>countryName AS countryName, badge FROM Batchers_page_db
,然后像这样rows.Scan(&batcher.ProfileURL, &batcher.name, &batcher.points, &batcher.countryName, &batcher.Badge);
? - Akina