1 回答

TA貢獻1893條經驗 獲得超10個贊
如果您想將空字符串視為空值,您至少有兩個選擇。
“延長” null.String:
type MyNullString struct {
? ? null.String
}
func (ns *MyNullString) UnmarshalJSON(data []byte) error {
? ? if string(data) == `""` {
? ? ? ? ns.Valid = false
? ? ? ? return nil
? ? }
? ? ns.String.UnmarshalJSON(data)
}
NULLIF或者在查詢中使用:
INSERT INTO workorders (
? ? uuid
? ? , work_date
? ? , requested_by
) VALUES (
? ? $1
? ? , $2
? ? , NULLIF($3, '')
)
RETURNING uuid
更新:
要擴展 ,null.Time
您必須了解 的類型null.Time.Time
是struct。內置len
函數適用于切片、數組、數組指針、映射、通道和字符串。不是結構體。因此,在這種情況下,您可以檢查參數(這是一個字節切片),方法是將其轉換為字符串并將其與包含空字符串的data
字符串進行比較,即它有兩個雙引號而沒有其他內容。
type MyNullTime struct {
? ? null.Time
}
func (ns *MyNullTime) UnmarshalJSON(data []byte) error {
? ? if string(data) == `""` {
? ? ? ? ns.Valid = false
? ? ? ? return nil
? ? }
? ? return ns.Time.UnmarshalJSON(data)
}
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報