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

迭代 MySQL 记录并在 GoLang 中创建 JSON

迭代 MySQL 记录并在 GoLang 中创建 JSON

Go
杨__羊羊 2022-01-17 18:44:53
我正在尝试从我的 Go 应用程序中读取 MySQL 数据库中的数据。var queryStr string = "SELECT * FROM Customers"rows, err := db.Query(queryStr)defer rows.Close()for rows.Next() {    // do stuffs}查询没问题,它可以工作;现在我想轻松地将 MySQL 查询的每条记录映射到我之前定义的 Customer 对象,如下所示:type Customer struct {    id              IntegerType     `json:"id"`    name            string          `json:"name"`    surname         string          `json:"surname"`}我怎样才能做到这一点?第二个问题:一旦我得到一个 Customer 对象数组,我怎样才能轻松地将它放入一个名为“data”的特定键下的新 JSON 对象中?谢谢你的支持 :)
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

导出字段,以便它们可以在 JSON 上使用:


type Customer struct {

   ID      int         `json:"id"`

   Name    string      `json:"name"`

   Surname string      `json:"surname"`

}

声明一个要编组为 JSON 的值:


var v struct {

    Data []Customer `json:"data"`

}

查询特定字段:


var queryStr string = "SELECT id, name, surname FROM Customers"

rows, err := db.Query(queryStr)

循环遍历增加值的行。


defer rows.Close()

for rows.Next() {

    // Scan one customer record

    var c Customer

    if err := rows.Scan(&c.ID, &c.Name, &c.Surnmae); err != nil {

        // handle error

    }

    v.Data = append(v.Data, c)

}

if rows.Err() != nil {

    // handle error

}

将值编组为 JSON


p, err := json.Marshal(v)

if err != nil {

    // handle error

}

该值p是一个包含 JSON 的 []byte。


查看完整回答
反对 回复 2022-01-17
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

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