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 关注
- 108 浏览
添加回答
举报