Golang - 从 MySQL 检索多个结果,然后将它们显示为 JSON
Golang - retrieve multiple results from MySQL, then display them as JSON
最近在学习Go(Golang)。我正在尝试使用 Martini 和 jwt-go 制作一个简单的网络服务。我没有发现检索单行数据并输入 JSON 作为响应有任何困难。但是,在处理多行时,情况就完全不同了。基本上,我指的是已接受的答案 here.
这是我的代码片段:
m.Get("/users", func(params martini.Params, r render.Render) {
db, err := sql.Open("mysql", "root:@/sirat_v2")
if err != nil {
panic(err.Error())
}
defer db.Close()
rows, err := db.Query("SELECT user_id, nama FROM `users` WHERE password = ?", "asdfasdf")
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
panic(err.Error())
}
partages := make([]*Partage, 0, 10)
var user_id int
var nama string
for rows.Next() {
err = rows.Scan(&user_id, &nama)
if err != nil { /* error handling */
}
partages = append(partages, &Partage{user_id, nama})
}
})
尝试构建时出现错误,指出 Partage 未定义。
出现这个错误是因为你使用struct Partage
创建了一个对象,但是你还没有声明它。
type Partage struct {
user_id string
nama string
}
But how do I display the result as JSON response? I've tried r.JSON(200, partages) but the results aren't displayed
在 martini 中,您可以使用 r.JSON()
将 rows
打印为 JSON
m.Get("/users", func(params martini.Params, r render.Render) {
// ...
r.JSON(200, map[string]interface{}{
data: rows
})
})
最近在学习Go(Golang)。我正在尝试使用 Martini 和 jwt-go 制作一个简单的网络服务。我没有发现检索单行数据并输入 JSON 作为响应有任何困难。但是,在处理多行时,情况就完全不同了。基本上,我指的是已接受的答案 here.
这是我的代码片段:
m.Get("/users", func(params martini.Params, r render.Render) {
db, err := sql.Open("mysql", "root:@/sirat_v2")
if err != nil {
panic(err.Error())
}
defer db.Close()
rows, err := db.Query("SELECT user_id, nama FROM `users` WHERE password = ?", "asdfasdf")
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
panic(err.Error())
}
partages := make([]*Partage, 0, 10)
var user_id int
var nama string
for rows.Next() {
err = rows.Scan(&user_id, &nama)
if err != nil { /* error handling */
}
partages = append(partages, &Partage{user_id, nama})
}
})
尝试构建时出现错误,指出 Partage 未定义。
出现这个错误是因为你使用struct Partage
创建了一个对象,但是你还没有声明它。
type Partage struct {
user_id string
nama string
}
But how do I display the result as JSON response? I've tried r.JSON(200, partages) but the results aren't displayed
在 martini 中,您可以使用 r.JSON()
将 rows
打印为 JSON
m.Get("/users", func(params martini.Params, r render.Render) {
// ...
r.JSON(200, map[string]interface{}{
data: rows
})
})