Spring 3.2 und Jackson 2: hinzufügen von benutzerdefinierten Objekt-mapper

Ich bin die Entwicklung eines REST-webservice in spring MVC. Ich brauche, um zu ändern, wie jackson 2 serialisieren mongodb objectids. Ich bin mir nicht sicher, was zu tun, denn die fand ich teilweise Dokumentation für jackson 2, was ich getan habe ist, erstellen Sie eine benutzerdefinierte serializer:

public class ObjectIdSerializer extends JsonSerializer<ObjectId> {


    @Override
    public void serialize(ObjectId value, JsonGenerator jsonGen,
            SerializerProvider provider) throws IOException,
            JsonProcessingException {
        jsonGen.writeString(value.toString());
    }
}

Erstellen Sie einen ObjectMapper

public class CustomObjectMapper extends ObjectMapper {

    public CustomObjectMapper() {
        SimpleModule module = new SimpleModule("ObjectIdmodule");
        module.addSerializer(ObjectId.class, new ObjectIdSerializer());
        this.registerModule(module);
    }

}

und registrieren Sie dann die mapper

<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>

Meine CustomConverter wird nie aufgerufen. Ich denke, die CustomObjectMapper definition ist falsch,ich angepasst, es von einigen code für jackson 1.x

In mein Controller, ich bin mit @ResponseBody.
Wo bin ich falsch? Dank

InformationsquelleAutor der Frage alex | 2013-01-16

Schreibe einen Kommentar