1 回答
TA贡献1873条经验 获得超9个赞
使用 sql 扫描目标变量的指针可以扫描数据,使用(取决于检查是否 != nil)并编组到 json,从 API 发送出去,而不必放入数百个 sql .Nullstring、sql.Nullfloat64 等无处不在。空值被奇迹般地保存下来并通过编组的 json 发送出去。(见底部的父名)。在另一端,客户端可以使用 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 关注
- 141 浏览
添加回答
举报