1 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用 sql 掃描目標(biāo)變量的指針可以掃描數(shù)據(jù),使用(取決于檢查是否 != nil)并編組到 json,從 API 發(fā)送出去,而不必放入數(shù)百個(gè) sql .Nullstring、sql.Nullfloat64 等無(wú)處不在??罩当黄孥E般地保存下來(lái)并通過編組的 json 發(fā)送出去。(見底部的父名)。在另一端,客戶端可以使用 javascript 中的空值,這樣可以更好地處理它們。
func queryToJson(db *sql.DB) []byte {
rows, err := db.Query(
"select mothername, fathername, surname from fams" +
"where surname = ?", "Nullfather"
)
defer rows.Close()
type record struct {
Mname, Fname, Surname *string // the key: use pointers
}
records := []record{}
for rows.Next() {
var r record
err := rows.Scan(r.Mname, r.Fname, r.Surname) // no need for "&"
if err != nil {
log.Fatal(err)
}
fmt.Println(r)
records = append(records, r)
}
j, err := json.Marshal(records)
if err != nil {
log.Fatal(err)
}
return j
}
j := queryToJson(db)
fmt.Println(string(j)) // [{"Mothername":"Mary", "Fathername":null, "Surname":"Nullfather"}]
- 1 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報(bào)