如何将json字段插入mysql

Posted

技术标签:

【中文标题】如何将json字段插入mysql【英文标题】:How to insert json field into mysql 【发布时间】:2022-01-18 18:19:07 【问题描述】:

我正在尝试将 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, a map

【问题讨论】:

【参考方案1】:

让自定义地图类型实现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的主要内容,如果未能解决你的问题,请参考以下文章

如何将从接口取到的json数据存入mysql数据库

使用 Python Django 框架将 JSON 数据插入 mysql

如何仅将部分 JSON 元素插入 SQL 字段

如何将 JSON 解析数据插入 MYSQL

如何将json数组插入mysql数据库

如何将字符串数组插入mysql json列