Spring 3.2 和 Jackson 2:添加自定义对象映射器
2022-09-04 04:44:15
我正在春季MVC中开发一个REST Webservice。我需要改变jackson 2如何序列化mongodb objectids。我不确定该怎么办,因为我找到了jackson 2的部分文档,我所做的是创建自定义序列化程序:
public class ObjectIdSerializer extends JsonSerializer<ObjectId> {
@Override
public void serialize(ObjectId value, JsonGenerator jsonGen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jsonGen.writeString(value.toString());
}
}
创建对象映射器
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
SimpleModule module = new SimpleModule("ObjectIdmodule");
module.addSerializer(ObjectId.class, new ObjectIdSerializer());
this.registerModule(module);
}
}
,然后注册映射器
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="my.package.CustomObjectMapper"></bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
我的自定义转换器从不被调用。我认为CustomObjectMapper的定义是错误的,我从jackson 1.x的一些代码中改编了它
在我的控制器中,我使用@ResponseBody。我哪里做错了?谢谢