Golang Джин Отсутствует ключ в литерале карты при возврате значения - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь показать в массиве html json, но мне нужно поставить имя перед переменной:


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, она показывает слово, которое я вставил.

Спасибо!

1 Ответ

2 голосов
/ 11 марта 2020

Просто замените

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

на

c.JSON(200, mjson)

ПРИМЕЧАНИЕ: gin.H имеет тип map[string]interface{}, поэтому вам нужно передать карту, т. Е. Ключ здесь обязателен. Но если вы видите, метод JSON принимает int и interface{}, поэтому просто передайте интерфейс {}, т.е. ваш объект mjson.

...