douzhong2954 2017-06-18 04:14
浏览 205
已采纳

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

for the following golang program, i'm not able to get json output using gin-gonic library, if i do fmt.Print variable shows values, but when i convert to c.JSON (inventory) out it shows empty array, what is wrong with my code?

   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)
}
  • 写回答

1条回答 默认 最新

  • duan1983 2017-06-18 04:30
    关注

    Issue is InventoryItem struct fields have to be exported -

    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"`
    }
    

    Read more about exported and un-exported fields.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的