golang Time JSON格式化问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值