当前位置: 首页 > 面试题库 >

结果打印空的Json

何涵忍
2023-03-14
问题内容

我试图从我的postgres数据库中检索一些数据,并将它们打印localhost/dbjson。我成功地在没有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))
}

这是我访问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}]

有人知道是什么问题吗?


问题答案:

encoding/json包使用反射(reflect结构的包),以存取字段。您需要导出结构的字段以使其起作用(以大写字母开头):

type Book struct {
    Isbn   string
    Title  string
    Author string
    Price  float32
}

扫描时:

err := rows.Scan(&bk.Isbn, &bk.Title, &bk.Author, &bk.Price)

引用自json.Marshal()

结构值编码为JSON对象。每个 导出的struct字段都 成为对象的成员。



 类似资料:
  • 我正在使用Pycharm并试图将文本打印到控制台 最终打印命令('

  • 我已经从postman手动运行了url,我已经成功连接并打印了结果。 但是当我试图从一个方法调用它时,没有结果是打印。 下面是我使用的curl代码: 下面是curl_log的内容。文本 > 主机名localhost/codeignitertest在DNS缓存中找到 尝试127.0.0.1... TCP_NODELAY集 连接到localhost/codeignitertest(127.0.0.1)

  • 我正在尝试打印出一个字符串,如果Hello和世界是使用Flink CEP库找到的。我的源是 Kafka,并使用控制台生产者来输入数据。这部分正在起作用。我可以打印出我在主题中输入的内容。但是,它不会打印出我的最后一条消息“世界真好!它甚至不会打印出它进入了lambda。下面是类 任何帮助都将不胜感激。 谢谢!

  • 嗨,我有这样的东西: 如何打印排序结果?

  • 我想在localStorage中保存我来自服务器的令牌(服务器是用java制作的),但是下面的代码不起作用,所以我也想打印,看看我从服务器得到了什么数据。 我试图用和打印到控制台,但不起作用。 post请求在服务器上工作,但当我想打印时它会被卡住。我所说的卡住是指当我按下登录按钮时,什么也没有发生。 如何打印到控制台?

  • 问题内容: 如何获得要打印到[标准输出]的JUnit断言的结果? 我有一些像这样的测试: 这是我希望获得的打印输出格式: 是否可以使用和进行此操作?或是否存在任何,方法? 问题答案: 首先,您有两个问题,而不是一个。断言失败时,将引发异常。这样可以防止检查超过此点的任何断言。为了解决这个问题,您需要使用ErrorCollector。 其次,我不认为JUnit内置了任何方法来执行此操作。但是,您可以