gpt4 book ai didi

python - 解析 JSON 时间错误

转载 作者:IT王子 更新时间:2023-10-29 02:23:39 26 4
gpt4 key购买 nike

我正在尝试解析在 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"

最佳答案

这里的问题是您在从 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"

当来自 Python 的格式为 ""2006-01-02 15:04:05-0700 时,您使用了 ""2006-01-02T15:04:05Z07:00"" "".

在你的最后一个错误中也是如此,除了你删除了一对日期格式的引号与你在 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 返回的日期中有额外的引号。

关于python - 解析 JSON 时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com