我希望杰克逊将日期解析为以下格式:

/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()重写,因为在发生并发问题时,杰克逊需要克隆我们的格式。

10-04 14:55