我希望杰克逊将日期解析为以下格式:
/Date(1413072000000)/
我该如何使用Jackson ObjectMapper做到这一点?我尝试了setDateFormat和SimpleDateFormat,但是在该方法中,我无法设置出现的毫秒数。
最佳答案
您可以定义自己的DateFormat,如下所示:
public class MyDateFormat extends DateFormat {
@Override
public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
return toAppendTo.append(String.format("/Date(%d)/", date.getTime()));
}
@Override
public Date parse(String source, ParsePosition pos) {
throw new UnsupportedOperationException();
}
@Override
public Object clone() {
return new MyDateFormat();
}
}
并使用以下命令将MyDateFormat的实例设置为ObjectMapper:
mapper.setDateFormat(new MyDateFormat());
在MyDateFormat类中,添加了clone()重写,因为在发生并发问题时,杰克逊需要克隆我们的格式。