3
私は自分のpostgresデータベースからいくつかのデータを取り出して、それらをjsonとしてlocalhost/db
に印刷しようとしています。私はjsonなしで印刷に成功していますが、私はjsonでそれらを必要としています。結果として空のJsonを印刷します
main.go:
package main
import (
"database/sql"
"encoding/json"
"fmt"
"log"
"net/http"
_ "github.com/lib/pq"
)
type Book struct {
isbn string
title string
author string
price float32
}
var b []Book
func main() {
db, err := sql.Open("postgres", "postgres://****:****@localhost/postgres?sslmode=disable")
if err != nil {
log.Fatal(err)
}
rows, err := db.Query("SELECT * FROM books")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var bks []Book
for rows.Next() {
bk := new(Book)
err := rows.Scan(&bk.isbn, &bk.title, &bk.author, &bk.price)
if err != nil {
log.Fatal(err)
}
bks = append(bks, *bk)
}
if err = rows.Err(); err != nil {
log.Fatal(err)
}
b = bks
http.HandleFunc("/db", getBooksFromDB)
http.ListenAndServe("localhost:1337", nil)
}
func getBooksFromDB(w http.ResponseWriter, r *http.Request) {
fmt.Println(b)
response, err := json.Marshal(b)
if err != nil {
panic(err)
}
fmt.Fprintf(w, string(response))
}
This is what I get when I access localhost:1337/db
そして、これは端末に出力されます。
[{978-1503261969 Emma Jayne Austen 9.44} {978-1505255607 The Time Machine H. G. Wells 5.99} {978-1503379640 The Prince Niccolò Machiavelli 6.99}]
誰もが問題が何であるかを知っていますか?
@SaidSaifi編集済みの回答を参照してください。あなたは、大文字でフィールド名を始める必要があります。 – icza
ありがとう、私はアップグレードし、あなたの答えを受け入れたが、私は15の評判に達したときにのみ表示されます:) –