为了账号安全,请及时绑定邮箱和手机立即绑定

解析 JSON 时间错误

解析 JSON 时间错误

Go
温温酱 2021-11-22 18:14:14
我正在尝试解析在 python 中生成并发布到此处以存储在 cassandra 中的时间戳,但出现了一个奇怪的错误。parsing time ""2015-11-05 14:14:32-0700"" as ""2006-01-02T15:04:05Z07:00"": cannot parse " 14:14:32-0700"" as "T"无论如何,我不想修改 python 给我的时间,只想将它直接传递给 cassandra,但驱动程序说我需要让它成为time.Time(不是字符串)才能这样做。这是代码type OurCustomType struct {    TimeStamp   time.Time `json:"timestamp"`}func extractJsonBody(r *http.Request) []byte {    body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1048576))    if err != nil {        //...    }    if err := r.Body.Close(); err != nil {         //....    }    return body}func View(w http.ResponseWriter, r *http.Request) {    var variable OurCustomType    body := extractJsonBody(r)    if err := json.Unmarshal(body, &variable); err != nil {        //..    } else {        //...    }}编辑:我已经实现了我自己的time.Time类型并实现了一个自定义UnmarshalJSON来尝试解决这个问题。type PythonTime struct {    time.Time}func (self *PythonTime) UnmarshalJSON(b []byte) (err error) {    self.Time, err = time.Parse("2006-01-02 15:04:05-0700", string(b))    return}但我没有收到此错误:parsing time ""2015-11-05 14:14:32-0700"" as "2006-01-02 15:04:05-0700": cannot parse ""2015-11-05 14:14:32-0700"" as "2006"
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

这里的问题是您在从 Python 传递的日期中有引号。

在您发布的第一个错误中,您可以看到它在读取"T". 那是因为您在 Go 中使用的格式与从 Python 返回的格式不同。

parsing time ""2015-11-05 14:14:32-0700"" as ""2006-01-02T15:04:05Z07:00"": cannot parse " 14:14:32-0700"" as "T"

您使用""2006-01-02T15:04:05Z07:00""时从Python的格式为""2006-01-02 15:04:05-0700""

在您的上一个错误中也是如此,只是您删除了日期格式中的一对引号与您在 Python 中返回的内容。

parsing time ""2015-11-05 14:14:32-0700"" as "2006-01-02 15:04:05-0700": cannot parse ""2015-11-05 14:14:32-0700"" as "2006"

这是说您提供了"2006-01-02 15:04:05-0700"""2006-01-02 15:04:05-0700""由于 Python 返回的日期中的额外引号而导致的。


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信