2017-08-03 14 views
-1

我有這段代碼。如何在JSON中顯示一個結構體的映射鍵和值

package main 

import (
    "github.com/gin-gonic/gin" 
    _ "github.com/go-sql-driver/mysql" 
) 

func divisionsHandler(c *gin.Context) { 
    divisions := getDivisionRows() 
    json := make(map[int]string) 
    for divisions.Next() { 
     var d Division 
     err := divisions.Scan(&d.id, &d.name) 
     json[d.id] = d.name 
     if err != nil { 
      panic(err.Error()) 
     } 
    } 
    c.JSON(200, json) 
} 

結果是

{ 
    1: "games", 
    2: "technology", 
    3: "tekk", 
    4: "home entertainment", 
    5: "toys & stationery" 
} 

我想是JSON轉換成類似

{ 
    [{ 
     "id": 1, 
     "name": "games" 
    }, 
    ... 
    ] 
} 

但如何?

+3

這不是有效的JSON 。一個對象不能只包含一個數組。沒有開放和大括號的花括號更有意義。 – captncraig

回答

1

所以你想要一個json數組而不是一個json對象?

而不是加載一個map[int]string,爲什麼不簡單地做一個[]Division

list := []Division{} 
for divisions.Next() { 
    var d Division 
    err := divisions.Scan(&d.id, &d.name) 
    list = append(list, d) 
    if err != nil { 
     panic(err.Error()) 
    } 
} 

你需要的字段名稱更改爲IDName使得JSON包可序列化它們,但你應該結束了財產以後更像是:

[ 
    {"ID":1,"Name":"Games}, 
    ... 
] 
+0

非常感謝!有用!! – sensorario