首頁 > 後端開發 > Golang > 如何使用 Go 有效處理 JSON 和 SQL 中的 NULL 值?

如何使用 Go 有效處理 JSON 和 SQL 中的 NULL 值?

DDD
發布: 2024-12-31 01:52:09
原創
225 人瀏覽過

How to Handle NULL Values in JSON and SQL Effectively with Go?

使用Go 在SQL 中處理JSON 和NULL 值

在SQL 資料庫中處理NULL 值可能是一個挑戰,尤其是在使用JSON 時。在 Go 中,Int64 和 String 等類型本身並不支援 NULL 值,因此需要 sql.NullInt64 和 sql.NullString 等包裝類型。

但是,當這些包裝類型在結構體和JSON 中使用時使用json 包生成,由於包裝器的結構引入了額外的嵌套,生成的JSON 格式與預期有所不同nature.

解決問題

要解決此問題,一種可行的解決方案是創建遵循json.Marshaller 和json.Unmarshaler 介面的自訂類型。透過嵌入 sql.NullInt64 類型,保留了 SQL 方法的優點,同時自訂 JSON 處理。以下是範例:

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 {
    // Unmarshalling into a pointer detects null values
    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 類型取代 sql.NullInt64,JSON 編碼符合預期。

以上是如何使用 Go 有效處理 JSON 和 SQL 中的 NULL 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板