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

我正在尝试从 postgresql jsonb 和非 jsonb 列读取一些数据,然后解组我得到嵌套结构的响应字符串。


我能够以字符串形式检索数据。但我不知道如何将其解组到结构中。


package main

import (

    "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]

    }

慕勒3428872
浏览 156回答 1
1回答

UYOU

我认为这是 pq 驱动程序的预期行为来自该驱动程序的文档:pgx 包含对 Go 类型与 PostgreSQL JSON 和 JSONB 之间编组和解组的内置支持。我过去曾使用 pgx 进行 jsonb 解组——效果良好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go