Golang - 从MySQL检索多个结果,然后将它们显示为JSON

时间:2015-10-12 03:31:38

标签: mysql go

最近,我正在学习Go(Golang)。我尝试使用Martini和jwt-go创建一个简单的Web服务。我没有发现检索单行数据和放入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未定义。

1 个答案:

答案 0 :(得分:1)

错误显示是因为您使用struct Partage来创建对象,但您尚未声明它。

type Partage struct {
    user_id string
    nama string
}
  

但是如何将结果显示为JSON响应?我试过了r.JSON(200,partages),但结果没有显示

martini 中,您可以使用r.JSON()rows打印为JSON

m.Get("/users", func(params martini.Params, r render.Render) {
    // ... 

    r.JSON(200, map[string]interface{}{
        data: rows
    })
})
相关问题