golang Time JSON格式化问题
golang 的Time类型在格式化成JSON字符串的时候格式是 2006-01-02T15:04:05.999999999Z07:00 这种UTC的格式,而在日常开发中,我们习惯的还是使用 2006-01-02 15:04:05 这种格式
为了解决这个问题,我查询了一下网上的资料,大多给出的解决方案是重写Marshal方法。
例如: https://blog.csdn.net/qq_22211217/article/details/106363916
其实利用golang的struct继承的方式也可以解决这个问题。如下:
// 数据模型
type RealTime struct {
Vin string `json:"vin"` // VIN码,车号
Time *time.Time `json:"time"` // GPS 时间
}
// 用于Json序列化的模型
type JsonRealTime struct {
RealTime
Time string `json:"time"`
}
// JSON序列化
func Test_Json(t *testing.T) {
tm := time.Now()
rt := model.RealTime{
Time: &tm,
Vin: "safda",
}
var jrt model.JsonRealTime
jrt.RealTime = rt
jrt.Time = rt.Time.Format("2006-01-02 15:04:05")
jrt.Vin = rt.Vin
fmt.Println(jrt.Vin)
fmt.Println(jrt.Time)
}
结果输出
=== RUN Test_Json
safda
2021-01-04 11:25:12
--- PASS: Test_Json (2.26s)
PASS