mysql - 在Golang中从MySql读取Json数据?

标签 mysql json database go web

我面临的情况是,我必须使用用户本身给出的键和值对在数据库中存储动态值。

用户给出键和值,我将其解释为

{"key": "用户给定", "value": "用户给定"}

我将所有这些内容添加到一个数组中,并且我希望将该数组读入 Go 代码,其中从数据库表中读取对象数组

最佳答案

您可以使用 JSON Unmarshaler 接口(interface),但根据您从 MySql 检索数据的方式,您的实现会有所不同。但想法是一样的。对于此示例,我使用 https://github.com/go-sql-driver/mysql假设您想将数据存储在实际的 JSON 字段中(Mysql >= 5.7),您可以这样做:

type MyField struct {
    Key string `json:"key"`
    Value string `json:"value"`
}

type MyModel struct {
    ID uint64
    MyFieldName MyField `json:"my_field_name"`
}


func (m *MyField) Scan(src interface{}) error {
    // The data stored in a JSON field is actually returned as []uint8
    val := src.([]uint8)
    return json.Unmarshal(val, &m)
}

func main() {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1)/dbname")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    results, err := db.Query("SELECT id, my_field_name FROM my_table")

    if err != nil {
        panic(err.Error())
    }

    for results.Next() {
        var row MyModel
        err := results.Scan(&row.ID, &row.MyFieldName)
        if err != nil {
            panic(err.Error())
        }
        fmt.Println(row.MyFieldName.Key)
    }
}

关于mysql - 在Golang中从MySql读取Json数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51394852/

相关文章:

json - 如何将 hylang s-表达式序列化为 PostgreSQL json/json-b?

javascript - jQuery Ajax POST 获取 JSON 并返回值

mysql - Erlang json验证问题

SQL Server : create dynamically queries to select all related data in DB based on entry table and ID

php - 通过 PHP 调用的 MySQL 存储过程无法正常执行

通过 REST : Share a jar with class definitions? 进行 Java 到 Java 的对话

c++ - Mysql与Visual C++的连接

database - ORM自动建表违反DBA偏好

mysql - 无法添加外键mysql错误1215

sql - SQL 中的 ORDER BY