我正在从事一个非Spring Boot的项目。
有很多数据对象,手动为每个日期字段添加JsonFormat注释已经变得不太方便。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = JacksonSerialiser.DATE_FORMAT)
private Date someDate;
我知道我可以直接在ObjectMapper上设置日期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
OBJECT_MAPPER.setDateFormat(simpleDateFormat);
只有在使用对象映射直接完成所有序列化/反序列化操作时,此方法才有效。
您可以通过扩展StdSerializer<Date>
来实现CustomDateSerializer,但是为了应用格式,您需要在字段级别上指定如下:
@JsonSerialize(using = CustomDateSerializer.class)
public Date someDate;
使用Spring Boot时,您可以使用以下属性:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
希望我可以不使用Spring来设置此属性,这将是很好的。
ObjectMapper
的bean,这可能是一个单例。因此,在非Spring项目中,您可以创建一个静态工厂方法或类似的东西,在需要进行序列化/反序列化以获取配置的对象映射器和自定义序列化程序的位置进行调用。 - Michał Krzywański