为了账号安全,请及时绑定邮箱和手机立即绑定

将 postgresql jsonb 查询响应字符串解组到 golang 嵌套结构中

将 postgresql jsonb 查询响应字符串解组到 golang 嵌套结构中

Go
慕勒3428872 2023-06-26 15:24:53
我正在尝试从 postgresql jsonb 和非 jsonb 列读取一些数据,然后解组我得到嵌套结构的响应字符串。我能够以字符串形式检索数据。但我不知道如何将其解组到结构中。package mainimport (    "database/sql"    "fmt"    "log"    "strconv"    _ "github.com/lib/pq")type Token struct {    Name     string    Value    string    Path     string    HttpOnly bool}type Session struct {    Phishlet   string                       `json:"phishlet,omitempty"`    LandingURL string                       `json:"landing_url,omitempty"`    Username   string                       `json:"username,omitempty"`    Password   string                       `json:"password,omitempty"`    Custom     map[string]string            `json:"custom,omitempty"`    Tokens     map[string]map[string]*Token `json:"tokens,omitempty"`    SessionId  string                       `json:"session_id,omitempty"`    UserAgent  string                       `json:"useragent,omitempty"`    RemoteAddr string                       `json:"remote_addr,omitempty"`    CreateTime int64                        `json:"create_time,omitempty"`    UpdateTime int64                        `json:"update_time,omitempty"`}type Sessions struct {    Id      int64    UserId  []byte    Session Session}func main() {    db, err := sql.Open("postgres", "postgres://user:pass@localhost:port/db")    if err != nil {        log.Fatal(err)    }    rows, err := db.Query("SELECT id, user_id,session FROM sessions ORDER BY id")    defer rows.Close()    columns, err := rows.Columns()    if err != nil {        log.Fatal(err)    }    count := len(columns)    values := make([]interface{}, count)    scanArgs := make([]interface{}, count)    for i := range values {        scanArgs[i] = &values[i]    }
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我认为这是 pq 驱动程序的预期行为

来自该驱动程序的文档:

pgx 包含对 Go 类型与 PostgreSQL JSON 和 JSONB 之间编组和解组的内置支持。

我过去曾使用 pgx 进行 jsonb 解组——效果良好。


查看完整回答
反对 回复 2023-06-26
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信