温馨提示:本文翻译自stackoverflow.com,查看原文请点击:go - Golang Gin Missing key in map literal when returning value
gin go

go - 返回值时 map文字中的Golang Gin Missing键

发布于 2020-05-28 14:42:22

我正在尝试在html上显示一个json数组,但是我需要在var之前放置一个名称:


func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        var mjson []model.Author
        db, err := sql.Open("mysql", "root:@tcp(localhost)/bibliotecagnommo")
        if err != nil {
            fmt.Println(err)
        }
        datos, err2 := db.Query("SELECT * FROM author;")
        if err2 != nil {
            fmt.Println(err2)
        }
        for datos.Next() {
            var id, nombre, apellido string
            err3 := datos.Scan(&id, &nombre, &apellido)
            if err3 != nil {
                fmt.Println(err3)
            }
            autor := new(model.Author)
            autor.Id = id
            autor.FirstName = nombre
            autor.LastName = apellido

            //autorJsonString := string(autorJson);

            mjson = append(mjson, *autor)
        }
        c.JSON(200, gin.H{
    //This line of code     "wordToAvoid":mjson,
        })
    })
    r.Run()

}

有一种避免在此之前加上一个单词的方法吗?

因为当我在html上打印var时,它显示了我输入的单词。

谢谢!

查看更多

提问者
Paco Pinazo Guna
被浏览
13
Amit Upadhyay 2020-03-12 00:03

只需更换

c.JSON(200, gin.H{
    //This line of code     "wordToAvoid":mjson,
        })

c.JSON(200, mjson)

注意:gin.H具有类型map[string]interface{},因此您需要传递 map,即必须在其中输入密钥。但是,如果看到的话,JSON方法会接受intand interface{},因此只需传递一个interface {}即您的object即可mjson