我正在開發Spring MVC中的REST web服務。我需要改變jackson 2如何序列化mongodb objectids。我不知道該怎麼做,因爲我發現部分文檔傑克遜2,我所做的就是創建一個自定義序列:Spring 3.2和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());
}
}
創建ObjectMapper
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>
我的CustomConverter永遠不會被調用。我認爲CustomObjectMapper定義是錯誤的,我將它從一些代碼改編爲jackson 1.x
在我的控制器中,我使用@ResponseBody。 我在哪裏做錯了?由於
序列化和註冊看起來是正確的,所以我認爲問題在於xml配置。 – StaxMan
是的,感謝您的建議,我在文件周圍有一個空的標籤。它正在工作 –
alex
僅供參考文檔說使用StdSerializer代替:http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/ser/std/StdSerializer.html – testing123