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

时间:2016-06-19 12:48:34

标签: mysql json go

我正在尝试从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 个答案:

答案 0 :(得分:6)

Export个字段,因此可以在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的[]字节。