杰克逊日期反序列化错误

时间:2016-12-09 14:57:29

标签: date jersey jackson deserialization

我正在开发Rest API并使用Jackson库进行Json处理。

在我的POJO中,我定义了一些java.util.Date字段,并且我使用ObjectMapper解析这些日期。

问题是所有日期都是错误的。

以下是从客户端收到的示例Json数据:

{
 "Date1":"20161208 121500",
 "Date2":"20161205 131515",
 "Date3":"19830201 122718"
}

以下是代码段:

private final SimpleDateFormat df =  new SimpleDateFormat("yyyyMMDD hhmmss");

ObjectMapper mapper = new ObjectMapper();
mapper.setTimeZone(TimeZone.getDefault());
mapper.setDateFormat(df);
MetaData mData = null;

try {      
  mData = mapper.readValue(metaData, MetaData.class);
}
catch(JsonProcessingException jpe) {
  return Response.status(Status.BAD_REQUEST).build();
}

创建Date对象时,它会关闭几个月。当我在日志中打印日期时,我得到以下内容:

Date1: 01/08/16 00:15:00 (Original date is 12/08/2016)
Date2: 01/05/16 13:15:15 (Original date is 12/05/2016)
Date3: 01/01/83 00:27:18 (Original date is 02/01/1981)

任何人都可以看到我做错了什么:(

非常感谢!

1 个答案:

答案 0 :(得分:0)

您的日期时间模式不正确。模式应为yyyyMM dd hhmmss。

'D'代表日期,'d'代表日期。