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

Jackson 无法反序列化从 Golang Api 设置的日期

Jackson 无法反序列化从 Golang Api 设置的日期

Go
千万里不及你 2022-09-05 17:01:56
我正在开发一个Golang Micro-service,它使用基于Java的Cucumber测试BDD。架构中有一个日期变量,它被定义为:startDate *time.Time我将此值设置为:t := time.Now()startDate = &t当我通过Java程序运行BDD时,我得到这个错误:Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2021-06-11T10:53:57.1124553+05:30": not a valid representation (error: Failed to parse Date value '2021-06-11T10:53:57.1124553+05:30': Unparseable date: "2021-06-11T10:53:57.1124553+05:30")在我的BDD测试中,我有:private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(dateFormat);我对Golang相对较新,在处理约会时会遇到问题。到目前为止,我一直在尝试:t := time.Now().Format(time.RFC3339)tt, _ := time.Parse(time.RFC3339, t)startDate = &tt我甚至尝试了 ,但我无法找出问题。time.LoadLocation()
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您提供的 Go 代码不会影响实例的序列化方式,因为您在将实例序列化为 .TimeTimestring

如果您能够控制日期字段的序列化方式,则可以应用以下格式,这些格式应与您提供给 Jackson 的格式保持一致:ObjectMapper

now := time.Now()
formattedDate := now.Format("2006-01-02T15:04:05.000Z0700")

如果您无法控制日期在 Go 端的序列化方式,还可以在 Java 端调整日期格式。下面的示例假定 Go 使用了 该函数:time.RFC3339

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号