最近,我正在学习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。

最佳答案

由于使用struct Partage创建对象,但尚未声明它,因此显示错误。

type Partage struct {
    user_id string
    nama string
}


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

马丁尼中,您可以使用r.JSON()rows打印为JSON
m.Get("/users", func(params martini.Params, r render.Render) {
    // ...

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

关于mysql - Golang-从MySQL检索多个结果,然后将其显示为JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33072861/

10-11 23:15
查看更多