做法
在一些情況下,資料庫裡的日期欄位會是 NULL
,比方說 ReviewedAt
欄位,如果有值,表示「已審核」,如果為 NULL
,表示「未審核」。
1 | type Model struct { |
這裡的 ReviewedAt
如果是 time.Time
型別:
1 | type ReviewedAt time.Time |
當 ReviewedAt
欄位為 NULL
,且序列化成 JSON 格式時,日期會變成預設值。
1 | { |
標準庫 database/sql
有提供 sql.NullTime
型別可以做為替代方案,如下:
1 | type ReviewedAt sql.NullTime |
sql.NullTime
型別包含了 Time
和 Valid
屬性:
1 | type NullTime struct { |
不過,當 ReviewedAt
欄位為 NULL
,且序列化成 JSON 格式時,日期會變成以下物件:
1 | { |
因此需要進一步封裝 sql.NullTime
型別:
1 | package model |
在模型中使用封裝後的 NullTime
型別:
1 | type Model struct { |
現在,當 ReviewedAt
欄位為 NULL
,且序列化成 JSON 格式時,日期就可以顯示為 NULL
。
1 | { |