使用Jakcson来解析json日期时间,检索timeoffset



我正在使用Dropwizard来实现一些REST Web服务。

用户将使用iso格式发送日期时间,如:"beginTime": "2016-03-30T16:56:35.43-10:00"

我需要得到用户发送的本地日期和时间或偏移量。

Jackson似乎丢失了偏移信息,并将日期设置为UTC。在从json反序列化的对象中,我得到了2016-03-31T02:56:35.430Z,我尝试了所有类型(CalendarDateTimeDate)。

我需要知道偏移量或用户的日期来计算用户时区的每日统计数据。

我试过DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE,但没有成功。

如何获取偏移量或/和输入日期?

对于java8,您可以使用jackson-datatype-jsr310库来反序列化ZonedDateTime实例。您必须注册一个JavaTimeModule并禁用反序列化功能ADJUST_DATES_TO_CONTEXT_TIME_ZONE:

String json = ""2016-03-30T16:56:35.430-10:00"";
ObjectMapper mapper = new ObjectMapper();
JavaTimeModule javaTimeModule=new JavaTimeModule();
mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
mapper.registerModule(javaTimeModule);
ZonedDateTime obj = mapper.readValue(json, ZonedDateTime.class);
System.out.println(obj);
//prints: 2016-03-30T16:56:35.430-10:00

或者,您可以通过添加库jackson数据类型joda并注册JodaModule来反序列化org.joda.time.DateTime实例。

String json = ""2016-03-30T16:56:35.430-10:00"";
ObjectMapper mapper = new ObjectMapper();
JodaModule jodaModule=new JodaModule();
mapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
mapper.registerModule(jodaModule);
DateTime obj = mapper.readValue(json, DateTime.class);
System.out.println(obj);
//prints: 2016-03-30T16:56:35.430-10:00

相关内容

  • 没有找到相关文章

最新更新