第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何將sql輸出格式化為json

如何將sql輸出格式化為json

Go
精慕HU 2021-12-06 18:36:04
我有一個(gè)查詢(xún)數(shù)據(jù)庫(kù)并返回兩列的 Go 函數(shù):var colA stringvar colB string    err = db.QueryRow("select colA, colB from table where colA = %v", 1).Scan(&colA,&colB)    if err != nil {        fmt.Printf(err.Error())    }    fmt.Println(colA,colB)    return nil我想以 json 格式返回輸出,如 {colA:colB}。我玩過(guò) json.Marshal 函數(shù),但無(wú)法正常工作。
查看完整描述

3 回答

?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您知道您的數(shù)據(jù)將是什么,您可以創(chuàng)建一個(gè)結(jié)構(gòu):例如


type User struct {

    Username string `json:"username"`

    Email    string `json:"email"`

}

然后在您的查詢(xún)中:


user := User{}

err = db.QueryRow("select colA, colB from table where colA = %v", 1).Scan(&user.Username,&user.Email)

    if err != nil {

        fmt.Printf(err.Error())

}

然后調(diào)用 marshal 就可以了


msg, err := json.Marshal(user)

if err != nil {

    log.Println(err)

}


fmt.Println(string(msg)) // "{ "username": "Blah", "email": "asd@asd.com" }"

另外隨著json.Marshal包,如果你調(diào)用Marshal在struct你的領(lǐng)域必須使用的字段名,例如首都首字母出口Username


// 此包忽略字段。字段整數(shù)json:"-"


// 字段在 JSON 中顯示為鍵“myName”。字段整數(shù)json:"myName"


// 字段在 JSON 中顯示為鍵 "myName" 并且 // 如果該字段的值為空,則該字段將從對(duì)象中省略, // 如上所述。字段整數(shù) json:"myName,omitempty"


// 字段在 JSON 中顯示為鍵“Field”(默認(rèn)值),但 // 如果為空,則跳過(guò)該字段。// 注意前導(dǎo)逗號(hào)。字段整數(shù) json:",omitempty"


https://golang.org/pkg/encoding/json/#Marshal


查看完整回答
反對(duì) 回復(fù) 2021-12-06
?
揚(yáng)帆大魚(yú)

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以創(chuàng)建一個(gè)單元素映射并對(duì)其進(jìn)行編組:


m := map[string]string{colA: colB}

b, err := json.Marshal(m)

完整示例:https : //play.golang.org/p/ntT5h3oHvY


查看完整回答
反對(duì) 回復(fù) 2021-12-06
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是一個(gè)完整的示例:


campaign.model.go:


package models


import "database/sql"


// Campaign Model

type Campaign struct {

    CampaignId int `db:"campaign_id" json:"campaignId"`

    CampaignNme string `db:"campaign_nme" json:"campaignNme"`

    OrganizationId sql.NullInt64 `db:"organization_id" json:"organizationId"`

}

campaign.repository.go:


package repositories


import (

    "github.com/jmoiron/sqlx"

    "go-clean-arch/domain/models"

    "go-clean-arch/domain/repositories"

)


type CampaignRepository struct {

    Db *sqlx.DB

}


func NewCampaignRepository(Db *sqlx.DB) repositories.CampaignRepository {

    return &CampaignRepository{Db}

}


func (cr *CampaignRepository)FindById(id string) (models.Campaign, error) {

    campaign := models.Campaign{}

    query := `

        SELECT

            campaign_id,

            campaign_nme,

            organization_id

        FROM "CAMPAIGN" WHERE campaign_id = $1

    `

    err := cr.Db.Get(&campaign, query, id)

    if err != nil {

        return campaign, err

    }

    return campaign, nil

}

main.go:


func main() {

    dbConf := database.PGDatabaseConfig{

        Host: viper.GetString("SQL_HOST"),

        Port: viper.GetString("SQL_PORT"),

        User: viper.GetString("SQL_USER"),

        Password: viper.GetString("SQL_PASSWORD"),

        Dbname: viper.GetString("SQL_DB"),

    }

    db, err := database.ConnectPGDatabase(&dbConf)

    if err != nil {

        log.Fatal(err)

    }


    defer func () {

        if err := recover(); err != nil {

            fmt.Println(err)

        }

    }()


    //userRepository := repositories.NewUserRepository(db)

    //users, _ := userRepository.FindAll()

    //fmt.Printf("%#v", &users)


    campaignRepository := repositories.NewCampaignRepository(db)

    campaign, err := campaignRepository.FindById("102")

    if err != nil {

        panic(err)

    }

    fmt.Printf("%#v", campaign)

    campaignJSON, err := json.Marshal(campaign)

    if err != nil {

        panic(err)

    }

    fmt.Println(string(campaignJSON))


}

輸出:


?  go-clean-arch [master] ?  go run main.go

models.Campaign{CampaignId:102, CampaignNme:"Generic Party / Memories", OrganizationId:sql.NullInt64{Int64:0, Valid:false}}

campaignJSON: {"campaignId":102,"campaignNme":"Generic Party / Memories","organizationId":{"Int64":0,"Valid":false}}


查看完整回答
反對(duì) 回復(fù) 2021-12-06
  • 3 回答
  • 0 關(guān)注
  • 372 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)