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

最近在学习Go(Golang)。我正在尝试使用 Martini 和 jwt-go 制作一个简单的 Web 服务。我在检索单行数据并输入 JSON 作为响应时没有发现任何困难。但是,在处理多行时,情况就完全不同了。基本上,我指的是这里接受的答案。


这是我的一段代码:


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 未定义。


交互式爱情
浏览 319回答 1
1回答

潇湘沐

出现错误是因为您使用 structPartage创建对象,但您尚未声明它。type Partage struct {    user_id string    nama string}但是如何将结果显示为 JSON 响应?我试过 r.JSON(200, partages) 但结果没有显示在马提尼酒中,您可以使用r.JSON()以rowsJSON 格式打印m.Get("/users", func(params martini.Params, r render.Render) {    // ...     r.JSON(200, map[string]interface{}{        data: rows    })})
打开App,查看更多内容
随时随地看视频慕课网APP