Ich entwickle einen REST-Webservice im Frühjahr MVC. Ich muss ändern, wie Jackson 2 mongodb objectids serialisiert. Ich bin mir nicht sicher, was zu tun, weil ich Teil-Dokumentation für jackson 2 gefunden, was ich tat, ist ein benutzerdefinierten Serializer zu erstellen:Spring 3.2 und Jackson 2: benutzerdefinierte Objekt Mapper hinzufügen
public class ObjectIdSerializer extends JsonSerializer<ObjectId> {
@Override
public void serialize(ObjectId value, JsonGenerator jsonGen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jsonGen.writeString(value.toString());
}
}
erstellen ObjectMapper
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
SimpleModule module = new SimpleModule("ObjectIdmodule");
module.addSerializer(ObjectId.class, new ObjectIdSerializer());
this.registerModule(module);
}
}
und dann die Mapper registrieren
<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>
Mein CustomConverter wird nie aufgerufen. Ich denke, die CustomObjectMapper-Definition ist falsch, ich habe es aus einem Code für Jackson 1.x
In meinen Controllern verwende ich @ResponseBody. Wo mache ich mich falsch? Dank
Serializer und Registrierung sehen für mich richtig aus, ich denke, das Problem liegt in der XML-Konfiguration. – StaxMan
Ja, danke für den Vorschlag, ich hatte ein leeres -Tag um die Datei. Es funktioniert jetzt –
alex
FYI sagen die Docs, stattdessen StdSerializer zu verwenden: http://fasterxml.github.io/jackson-databind/javadoc/2.0/com/fasterxml/jackson/databind/ser/std/StdSerializer.html – testing123