登录
首页 >  Golang >  Go问答

如何将 JSON 数据导入 MySQL 数据库

来源:stackoverflow

时间:2024-02-18 22:06:29 256浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《如何将 JSON 数据导入 MySQL 数据库》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在尝试将 json 字段插入到 mysql 中。它给出了一个错误。这里需要您的帮助。

我的示例代码类

type StringInterfaceMap map[string]interface{}

type Movie struct {
    Id           int
    Name         string
    Casting      StringInterfaceMap
    Language     string
    Release_date time.Time
    Rating       float32
    IsAbove18    bool
}

func buildBrowserData() map[string]interface{} {
    return map[string]interface{}{
        "Actor": "Rajinikanth", "Music": "Deva",
        "resolution": struct {
            X int json:"x"
            Y int json:"y"
        }{1920, 1080},
    }
}
entry := model.Movie{
        Id:           6,
        Name:         ctx.QueryParam("Name"),
        Casting:      buildBrowserData(),
        Language:     ctx.QueryParam("Language"),
        Release_date: ctx.QueryParam("Release_date"),
        Rating:       1,
        IsAbove18:    true,
    }

当尝试插入上述条目模型时,在插入铸造类型时出现以下错误。 转换参数类型:不支持的类型 model.stringinterfacemap,地图


正确答案


让自定义地图类型实现 driver.Valuer 接口,例如

func (m stringinterfacemap) value() (driver.value, error) {
    return json.marshal(m)
}

如果您还希望能够从数据库检索 json,您可以实现 sql.Scanner 接口,例如

func (m *StringInterfaceMap) Scan(src interface{}) error {
    switch data := src.(type) {
    case []byte:
        return json.Unmarshal(data, m)
    case string:
        return json.Unmarshal([]byte(data), m)
    default:
        return fmt.Errorf("unsupported type: %T", src)
    }
    return nil
}

今天关于《如何将 JSON 数据导入 MySQL 数据库》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>