Golang 1.6: mysql.NullTime 没有改写 Marshal JSON 的问题

在扫描 MySQL 中可以为 NULL 的值时,通常会用 database/sql 中的类型,比如 sql.NullInt64, sql.NullString 等,对于  time.Time 类型,可以使用 MySQL Driver 中的 mysql.NullTime 类型,但是当使用 Marshal 序列化 JSON 时,无论是 NULL 还是不是,这些属性都直接把内部字段给输出了,完全不是想要的样子。

显然这些类型没有执行 Marshal JSON 方法,当然可以给相关工程提 Issue,不过由于问题急于解决,于是决定使用了另一个专门针对 NULL 定义的工程:https://github.com/guregu/null ,不过这个工程也有问题,它的 null.Time 类型,无法解析 MySQL 的时间类型(DATETIME),所以简单fork了下它,地址是:https://github.com/mgenware/null , 把 https://github.com/go-sql-driver/mysql 中的相关时间解析代码移植过去,暂时 OK 了,当然这次改动仅限于对 MySQL 数据库的支持。

声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。

Golang 1.6: mysql.NullTime 没有改写 Marshal JSON 的问题