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中文網其他相關文章!