当我在js
中定义这样的时间时{expiry:new Date()}
并在go端点中创建一个像这样的结构
{Expiry time.Time `json:"expiry"`}
我从go
得到一个解析错误"parsing time \"\"2006-01-02T15:04:05Z07:00\"\" as \"\"2006-01-02T15:04:05Z07:00\"\": cannot parse \"07:00\"\" as \"\"\""
有什么建议吗?
答案 0 :(得分:6)
time.UnmarshalJSON的文档声明:
UnmarshalJSON实现了json.Unmarshaler接口。预计时间是RFC 3339格式的带引号的字符串。
存在一个问题,即所有浏览器都不一定将DateTime
个对象编码为RFC3339格式。但是,您的错误消息似乎并不意味着这一点。您似乎尝试编码以下JSON字符串:
"2006-01-02T15:04:05Z07:00"
这不是时间戳,而是time
包的参考布局。请参阅此Playground示例,其中显示了Go期望时间戳如何:http://play.golang.org/p/4NQ1pRidPt
但是,浏览器不一致仍存在问题。为避免这种情况,您可以使用函数或库,如@elithrar建议:
var a = {expiry: moment(new Date()).format("YYYY-MM-DDTHH:mm:ssZ")};
console.log(a);
<强>输出:强>
{"expiry": "2014-01-08T08:54:44+01:00"}