gpt4 book ai didi

go - 如何将sql输出格式化为json

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:14 25 4
gpt4 key购买 nike

我有一个查询数据库并返回两列的 Go 函数:

var colA string
var 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}。我试过 json.Marshal 函数,但无法使其正常工作。

最佳答案

如果您知道您的数据将是什么,您可以创建一个结构:例如

type User struct {
Username string `json:"username"`
Email string `json:"email"`
}

然后在您的查询中:

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())
}

然后调用 marshal 就可以了

msg, err := json.Marshal(user)
if err != nil {
log.Println(err)
}

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

还有 json.Marshal 包,如果你在 struct 上调用 Marshal,你的字段必须首先使用大写字母导出字段名称上的字母,例如用户名

// Field is ignored by this package. Field int json:"-"

// Field appears in JSON as key "myName". Field int json:"myName"

// Field appears in JSON as key "myName" and // the field is omitted from the object if its value is empty, // as defined above. Field int json:"myName,omitempty"

// Field appears in JSON as key "Field" (the default), but // the field is skipped if empty. // Note the leading comma. Field int json:",omitempty"

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

关于go - 如何将sql输出格式化为json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34584126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com