gin-gonic json 转换输出抛出空数组



对于以下 golang 程序,如果我使用 gin-gonic 库,我无法使用 gin-gonic 库获取 JSON 输出。打印变量显示值,但是当我转换为 c.JSON(库存(时,它显示空数组,我的代码有什么问题?

   package main
import (
    "database/sql"
    "os"
    "github.com/gin-gonic/gin"
    _ "github.com/go-sql-driver/mysql"
)
func index(c *gin.Context) {
    hostname, err := os.Hostname()
    checkErr(err)
    c.String(200, "v3 "+hostname)
}
func healthz(c *gin.Context) {
    c.String(200, "OK")
}
type InventoryItem struct {
    id                 int
    productID          string
    productCost        int
    productAvailabilty int
    productSubcat      string
}
func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}
/*******************  MAIN Function **************/
func main() {
    app := gin.Default()
    app.GET("/", index)
    app.GET("/healthz", healthz)
    app.GET("/inventory", fetch)
    app.Run(":8000")
}
/******************* End MAIN Function **************/
func fetch(c *gin.Context) {
    var (
        invt      InventoryItem
        inventory []InventoryItem
    )
    connStr := os.Getenv("sql_user") + ":" + os.Getenv("sql_password") + "@tcp(" + os.Getenv("sql_host") + ":3306)/" + os.Getenv("sql_db")
    db, err := sql.Open("mysql", connStr)
    checkErr(err)
    defer db.Close()
    rows, err := db.Query("SELECT id,product_id as productID,product_cost as productCost,product_availabilty as productAvailabilty,product_subcat as productSubcat FROM inventory;")
    for rows.Next() {
        err = rows.Scan(&invt.id, &invt.productID, &invt.productCost, &invt.productAvailabilty, &invt.productSubcat)
        checkErr(err)
        inventory = append(inventory, invt)
    }
    checkErr(err)
    defer rows.Close()
    //fmt.Print(inventory[0].productAvailabilty)
    c.JSON(200, inventory)
}

问题是必须导出InventoryItem结构字段 -

type InventoryItem struct {
   ID                 int    `json:"id"`
   ProductID          string `json:"product_id"`
   ProductCost        int    `json:"product_cost"`
   ProductAvailabilty int    `json:"product_availability"`
   ProductSubcat      string `json:"product_subact"`
}

阅读有关导出和未导出字段的详细信息。

最新更新