首页 > 解决方案 > 解组 time.Time 改变响应

问题描述

我正在从服务器获取一些数据并取消编组 JSON。当我将日期时间字符串转换为字符串时,我将所有结果都作为 Un-Marshalled 对象,但是当我将其键入为 时time.Time,对象的其余部分会被缩短。此外,日期是错误的,这可能是一个提示。

我开始将时间转换为字符串:

type History struct {
    Id      string
    Created string
    Items   []HistoryItem
}

    var response []History
    json.Unmarshal([]byte(s), &response)

太好了,我得到一个这样的列表:

[{91096 2021-06-04T10:28:21.179-0400 [{Rank  Ranked higher}]} {91078 2021-06-04T09:49:28.630-0400 [{Target end  8/Jun/21}]} //...etc

但是当我尝试将其转换为Time

type History struct {
    Id      string
    Created time.Time
    Items   []HistoryItem
}

我得到一个单品,显然是错误的时间。该对象中也没有其他值。

[{91096 0001-01-01 00:00:00 +0000 UTC []}]

实际的 JSON 表示形式如下所示:

"created": "2021-06-04T10:28:21.179-0400",

标签: gounmarshalling

解决方案


时间“2021-06-04T10:28:21.179-0400”不是可识别的格式。你必须自己解析它。您可以使用这种格式来解析它:

t, err:=time.Parse("2006-01-02T15:04:05.999999999-0700","2021-06-04T10:28:21.179-0400")

推荐阅读