Jackson JSON - 在反序列化时从Calendar对象中剥离时区

时间:2016-01-05 23:23:45

标签: java json spring spring-boot jackson

我有jackson反序列化器将json字符串中的日期转换为日历对象。我正在路过" 2015-10-22"在请求中它被转换为" 2015-10-22-04:00"在我将其转换为日历对象后。有没有办法抑制发送时区?在使用XMLGregorianCalendar的场景中,我正在使用" date.setTimezone(DatatypeConstants.FIELD_UNDEFINED)"压制时区。

private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

@Override
public Calendar deserialize(JsonParser jsonparser, DeserializationContext arg1) throws IOException, JsonProcessingException {
    // TODO Auto-generated method stub
    String dateString = jsonparser.getText();
    try {

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(formatter.parse(dateString));
        return calendar;
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
}

1 个答案:

答案 0 :(得分:1)

没有发送时区,所以问题"有没有办法抑制发送时区?"没有意义。

Calendar.getInstance()方法指定默认时区,请参阅javadoc:

  

使用默认时区和区域设置获取日历。返回的Calendar基于默认时区的当前时间和默认语言环境。

然后替换"当前时间"调用setTime(),但时区和语言环境保持不变。

Calendar对象将始终拥有时区和区域设置。