【问题标题】:Jackson date deserialization wrong杰克逊日期反序列化错误
【发布时间】:2017-04-25 02:15:14
【问题描述】:

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

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

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

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

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

这里是代码sn-p:

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)

谁能看到我做错了什么:(

非常感谢!

【问题讨论】:

    标签: date jersey jackson deserialization


    【解决方案1】:

    您的日期时间模式不正确。模式应该是 yyyyMMdd hhmmss。

    “D”表示年中的日,“d”表示月中的日。

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 2019-08-26
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      相关资源
      最近更新 更多