gpt4 book ai didi

json - 自定义时间 Marshall Unmarshall

转载 作者:IT王子 更新时间:2023-10-29 02:11:43 29 4
gpt4 key购买 nike

我有一个 MysqlTime 结构,它有自己的编码和解码。

type MysqlTime struct {
time.Time
}

const MYSQL_TIME_FORMAT = "2006-01-02 15:04:05"

func (t *MysqlTime) UnmarshalJSON(b []byte) (err error) {
s := strings.Trim(string(b), `\`)
if s == "null" {
t.Time = time.Time{}
return
}
t.Time, err = time.Parse(MYSQL_TIME_FORMAT, s)
return
}

func (t *MysqlTime) MarshalJSON() ([]byte, error) {
if t.Time.UnixNano() == nilTime {
return []byte("null"), nil
}
return []byte(fmt.Sprintf(`"%s"`, t.Time.Format(MYSQL_TIME_FORMAT))), nil
}

var nilTime = (time.Time{}).UnixNano()

func (t *MysqlTime) IsSet() bool {
return t.UnixNano() != nilTime
}

现在我想用它...

type Foo struct {
Time *MysqlTime
}

func main() {

now := MysqlTime(time.Now())

foo := Foo{}
foo.Time = &now
}

错误:

cannot convert now (type time.Time) to type helpers.MysqlTime
cannot take the address of helpers.MysqlTime(now)

最佳答案

执行此操作时:

now := MysqlTime(time.Now())

它尝试将 Time 转换为您的 MysqlTime 类型(这会引发错误)。

您的意思是像这样实际初始化内部 Time 属性吗?

now := MysqlTime{time.Now()}

关于json - 自定义时间 Marshall Unmarshall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784676/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com