【发布时间】:2015-02-24 23:18:07
【问题描述】:
使用 Spring Boot、Spring MVC 并通过 List 返回 POJO。当使用我的自定义 JsonSerializer (@JsonSerialize(using = DateTimeSerializer.class)) 注释的字段时,Date 字段未序列化。
JsonSerializer.serialize 未被调用。
我怎样才能让这个工作 - 强制杰克逊调用我的自定义序列化程序? 我可以扩展 ObjectMapper 并设置一些东西,但到目前为止没有任何效果。
我尝试注释 getter,但在这里没有成功。
使用 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 是我自己的方法,工作正常 - 返回我想要的字符串。
【问题讨论】:
-
你能发布你的 DateTimeSerializer 类吗?
-
好了,我已经编辑了我的帖子。
-
另外,你能提供你使用
@JsonSerialize的POJO吗? -
一个常见的问题是不小心将 Jackson 1.x 注释与 Jackson 2.x
ObjectMapper一起使用——所以请确保版本匹配(com.fasterxml.jackson表示 2.x,org.codehaus.jackson是 1.x )
标签: java spring spring-mvc serialization jackson