使用Spring Boot,Spring MVC并使用List返回POJO。使用我的自定义JsonSerializer(@JsonSerialize(using = DateTimeSerializer.class))注释字段时,Date
字段未序列化。
JsonSerializer.serialize
未被调用。
我怎样才能让这个工作 - 强迫杰克逊打电话给我的自定义序列化器? 我可以扩展ObjectMapper并设置一些东西,但到目前为止没有任何效果。
我试图对吸气剂进行注释,但这里没有成功。
使用Spring 4,Jackson 2.4.4,包括所有jackson依赖项(数据绑定,注释,核心)。我也包括了Spring OXM。
DateTimeSerializer类:
import java.io.IOException;
import java.util.Date;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class DateTimeSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException {
gen.writeString(DateUtil.toCzechDateTime(date));
}
}
DateUtil.toCzechDateTime是我自己的方法,可以正常工作 - 返回一个我想要的字符串。
答案 0 :(得分:2)
作为解决方法:
您可以实现自己的ObjectMapper
类并全局设置日期格式。 (相应地编辑以下代码)
public class CustomObjectMapper extends ObjectMapper {
public SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
public CustomObjectMapper() {
super();
super.setDateFormat(df);
}
或者您可以在getter中将DateUtil.toCzechDateTime(date)
添加到您的POJO中,并忽略原始的getter。并使用@JsonProperty("date")
返回新的getter。