4

SQL 出力 (GORP) を JSON に変換しようとしています。mySqlでgorpを使用しています。

これが私の選択したコードです

type Mane struct {
    ManeId   string `db:"mane_id"`
    Manetana string `db:"manetana"`
    Yajamana string `db:"yajamana"`
}

var manegalu []Mane
_, err = dbmap.Select(&manegalu, "SELECT mane_id, manetana, yajamana FROM kd_mane")

//Option 1: Not working: Array of numbers. Not the actual json
a, err := json.Marshal(manegalu)
mt.Fprint(w, string(a))

//Option 2: Not working: Array of numbers. Not the actual json
for _, p := range manegalu {
    a, err := json.Marshal(p)
    fmt.Fprint(w, string(a))
}

私はこのように期待して出力しています

{"mane_id":3323, "manetana":"ABC", "yajamana":"hgy"},{"mane_id":2323, "manetana":"ADFC", "yajamana":"FDER"},{"mane_id":12343, "manetana":"GDSC", "yajamana":"hFDEy"} 

私が間違っていることを教えてください。オプション 1 が機能しない理由は理解しています。しかし、 https://gobyexample.com/jsonによると、オプション2は私にとっては良いようです

4

2 に答える 2

2

json.Marshal()[]byteは 2 つの値を返しますerror。あなたの例では最初のものだけを割り当てています。http://golang.org/pkg/encoding/json/#Marshalを参照してください。

a, err := json.Marshal(manegalu)

編集: で使用するには、バイト配列を文字列に変換する必要がありますfmt.Fprint。あなたの場合、wインターフェースio.Writerなので、次のものも使用できます。

w.Write(a)

fmtパッケージをインポートせずに結果を印刷します。http://golang.org/pkg/io/#Writerを参照

于 2014-11-25T18:31:00.173 に答える