package main
import (
"database/sql"
"encoding/json"
"fmt"
"time"
)
type Request struct {
SomeString string 'json:"str"'
Time NullTime 'json:"time" format:"02.01.2006"'
}
type NullTime struct {
sql.NullTime
}
func (m NullTime) MarshalJSON() ([]byte, error) {
if m.Valid {
s := '"'+m.Time.Format("02.01.2006")+'"'
return []byte(s), nil
}
return []byte(null), nil
}
func main(){
r:=Request{
SomeString: "test",
Time: NullTime{},
}
res,err:=json.Marshal(r)
if err != nil {
panic(err)
}
fmt.Println(string(res))//{"str":"test","time":null}
r2:=Request{
SomeString: "test2",
Time: NullTime{sql.NullTime{time.Now(),true}},
}
res2,err2:=json.Marshal(r2)
if err2 != nil {
fmt.Println(err2)
}
fmt.Println(string(res2))//{"str":"test2","time":"16.05.2020"}
}