2017-06-18 227 views
3

對於下面的golang程序,我無法使用杜松子庫的json輸出,如果我做fmt.Print變量顯示值,但是當我轉換爲c。 JSON(庫存)它顯示空陣列,我的代碼有什麼問題?gin-gonic 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) 
} 

回答

3

問題是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"` 
} 

瞭解更多關於exported and un-exported fields

+0

謝謝你,幫助! – debianmaster