【发布时间】:2011-11-25 06:59:08
【问题描述】:
我正在使用 Jackson(通过 Spring MVC Annotations)将字段反序列化为来自 JSON 的 java.util.Date。 POST 看起来像 - {"enrollDate":"2011-09-28T00:00:00.000Z"},但是当 Spring & Jackson 创建对象时,它将日期设置为 "2011-09-27 20:00:00"。
如何在杰克逊设置正确的时区? 或者如果这不是问题,我如何从 JSON 消息中发送 EST?
Javascript/jQuery:
var personDataView = { enrollDate : new Date($("#enrollDate").val()),
//...other members
};
$.postJSON('/some/path/', personDataView, function(data){
//... handle the response here
});
JSON 消息:
{"enrollDate":"2011-09-28T00:00:00.000Z"}
弹簧控制器:
@RequestMapping(value="/", method=RequestMethod.POST)
public @ResponseBody String saveProfile(@RequestBody personDataView persondataView, HttpServletRequest request)
{
//...dataView has a java.util.Date enrollDate field
//...other code
}
【问题讨论】:
-
你在哪个时区?如果您在 UTC 以西 4 小时,这 2 个印章是等价的。
-
我在美国东部时间。那么为什么杰克逊假设我发送的传入时间是格林威治标准时间?我应该更改我的 javascript 以以不同的方式发布日期,还是更改杰克逊的设置?
-
时间戳末尾的 Z 是 +00:00 aka Zulu time aka UTC / GMT 的简写。
-
啊不知道,谢谢!我更新了这个问题,提供了有关如何构建和发送日期的更多信息。
-
我认为这是反序列化,不是序列化。标题应该调整?
标签: json spring-mvc jackson