2017-08-03 3 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) 
} 

結果は、私が

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

しかし、どのようなもので、そのJSONを変換しようとしています

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

のですか?

+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()) 
    } 
} 

JSONパッケージがそれらをシリアル化できるように、あなたがIDNameにフィールド名を変更する必要がありますが、あなたはより多くのように気にいらないで終わる必要があります。

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

ありがとうございました!!!できます!! – sensorario

関連する問題