如何使用高浪在 JSON 中打印 SQL 行?

我了解如何使用大猩猩/ mux go包返回JSON,但我希望能够在开发中打印JSON,而不必将其包装到路由端点


我有以下代码,并希望列出postgresql数据库中的用户


package main


import (

    "encoding/json"

    "fmt"

    "gorm.io/driver/postgres"

    "gorm.io/gorm"

)


var DB *gorm.DB

var err error



const DNS = "host=localhost user=postgres_user password=postgres_password dbname=postgres_db port=5432 sslmode=disable"



type User struct {

    gorm.Model

    FirstName string `json:"firstname"`

    LastName  string `json:"lastname"`

    Email     string `json:"email"`

}


func PostgresTest() {

    DB, err = gorm.Open(postgres.Open(DNS), &gorm.Config{})

    if err != nil {

        fmt.Println(err.Error())

        panic("Cannot connect to DB")

    }

    

    var users []User

    

    DB.Limit(2).Find(&users)

    // json.NewEncoder(w).Encode(users)

    fmt.Println(json.Marshal(users))


}


func main() {

    PostgresTest()

}

这是我期待的


[

    {

        "ID": 1,

        "CreatedAt": "2021-09-06T14:18:47.766414-05:00",

        "UpdatedAt": "2021-09-06T14:18:47.766414-05:00",

        "DeletedAt": null,

        "firstname": "first1",

        "lastname": "last1",

        "email": "first1.last1@email.com"

    },

    {

        "ID": 2,

        "CreatedAt": "2021-09-06T14:18:58.144181-05:00",

        "UpdatedAt": "2021-09-06T14:18:58.144181-05:00",

        "DeletedAt": null,

        "firstname": "first2",

        "lastname": "last2",

        "email": "first2.last2@email.com"

    }

]


我该怎么做才能打印 JSON 或 JSON 列表?


紫衣仙女
浏览 58回答 2
2回答

慕容森

json.Marshal函数返回,因此您在输出中看到的是 JSON 结果中每个字节的十进制表示形式。您必须直接将返回的转换为字符串,如下所示[]byte[]bytejson.MarshaljsonUsers, err := json.Marshal(users)if err != nil {  log.Fatal(err)}fmt.Println(string(jsonUsers))或使用格式化程序jsonUsers, err := json.Marshal(users)if err != nil {  log.Fatal(err)}fmt.Printf("%s", jsonUsers)我还建议您阅读软件包文档,以便找到如何设置JSON格式。encoding/json

红糖糍粑

用string(jsonbytecode)type B struct {    C int    D int}    func main() {    b := B{C: 4, D: 5}    js, _ := json.Marshal(b)    fmt.Println(js)    fmt.Println(string(js))}这是输出,转换为 JSONstring(js)[123 34 67 34 58 52 44 34 68 34 58 53 125]{"C":4,"D":5}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go