Go:在json响应中从数据库复制不同类型的数据
我试图从数据库中获取一组数据,并以json格式返回它们。然而,它们是不同的类型,我似乎在代码中使用了错误的返回类型 去:Go:在json响应中从数据库复制不同类型的数据,json,go,Json,Go,我试图从数据库中获取一组数据,并以json格式返回它们。然而,它们是不同的类型,我似乎在代码中使用了错误的返回类型 去: 我应该解决什么问题?您可以通过添加类型断言来修复编译器错误: s = append(s, Script{Id: m[i][0].(int), Type: m[i][1].(string), Created_at: m[i][2].(int)) 更好、更简单的方法是从ReadAllContent返回脚本对象片段: func ReadAllContent() []*Sc
我应该解决什么问题?您可以通过添加类型断言来修复编译器错误:
s = append(s, Script{Id: m[i][0].(int), Type: m[i][1].(string), Created_at: m[i][2].(int))
更好、更简单的方法是从ReadAllContent返回脚本对象片段:
func ReadAllContent() []*Script {
var result []*Script
err := db.Ping()
if err != nil {
log.Fatal(err)
}
rows, err := db.Query("SELECT id, type, created_at FROM script WHERE user_id = $1", user_id)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
s := &Script{}
err := rows.Scan(&s.ID, &s.Type, &s.Created_at)
if err != nil {
log.Fatal(err)
}
result = append(result, s)
}
return result
}
然后,您可以将ReadAllContent的返回直接编码为JSON:
func pingHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(&AllContent{New_content: ReadAllContent()}); err != nil {
// handle error
}
}
#挑剔:您已经命名了return参数,并且还返回了它。我想这是在golint(iirc…可能是错的)发现的。
func ReadAllContent() []*Script {
var result []*Script
err := db.Ping()
if err != nil {
log.Fatal(err)
}
rows, err := db.Query("SELECT id, type, created_at FROM script WHERE user_id = $1", user_id)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
s := &Script{}
err := rows.Scan(&s.ID, &s.Type, &s.Created_at)
if err != nil {
log.Fatal(err)
}
result = append(result, s)
}
return result
}
func pingHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(&AllContent{New_content: ReadAllContent()}); err != nil {
// handle error
}
}