首页 > 后端开发 > Golang > 如何在 Go JSON 编组中处理 SQL NULL 值?

如何在 Go JSON 编组中处理 SQL NULL 值?

Mary-Kate Olsen
发布: 2025-01-03 01:47:43
原创
967 人浏览过

How to Handle SQL NULL Values in Go JSON Marshalling?

Go 中 SQL NULL 值的 JSON 处理

在 Go 中处理可空 SQL 数据类型时,经常使用 sql.Nullxxx 类型允许空值。但是,在使用 json 包将此类结构编码为 JSON 时,这可能会导致格式问题。

默认情况下,sql.Nullxxx 类型由于其结构性质而被封送为具有附加级别的对象。这可能会导致不需要的 JSON 输出。要解决此问题,请考虑为嵌入 sql.Nullxxx 类型的自定义类型实现 json.Marshaller 和 json.Unmarshaler 接口。

例如,以下 JsonNullInt64 类型可用于将 sql.NullInt64 值编码为null 或整数:

type JsonNullInt64 struct {
    sql.NullInt64
}

func (v JsonNullInt64) MarshalJSON() ([]byte, error) {
    if v.Valid {
        return json.Marshal(v.Int64)
    } else {
        return json.Marshal(nil)
    }
}

func (v *JsonNullInt64) UnmarshalJSON(data []byte) error {
    var x *int64
    if err := json.Unmarshal(data, &x); err != nil {
        return err
    }
    if x != nil {
        v.Valid = true
        v.Int64 = *x
    } else {
        v.Valid = false
    }
    return nil
}
登录后复制

使用 JsonNullInt64 时类型,它将以预期的方式进行编码,允许正确的 JSON 表示,而无需额外的级别。

以上是如何在 Go JSON 编组中处理 SQL NULL 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板