我了解如何使用大猩猩/ mux go包返回JSON,但我希望能够在开发中打印JSON,而不必将其包装到路由端点我有以下代码,并希望列出postgresql数据库中的用户package mainimport ( "encoding/json" "fmt" "gorm.io/driver/postgres" "gorm.io/gorm")var DB *gorm.DBvar err errorconst 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 列表?
2 回答
慕容森
TA贡献1853条经验 获得超18个赞
json.Marshal函数返回,因此您在输出中看到的是 JSON 结果中每个字节的十进制表示形式。您必须直接将返回的转换为字符串,如下所示[]byte[]bytejson.Marshal
jsonUsers, 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
红糖糍粑
TA贡献1815条经验 获得超6个赞
用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}
- 2 回答
- 0 关注
- 57 浏览
添加回答
举报
0/150
提交
取消