2013-07-05 5 views
8

Von dieser Antwort (https://stackoverflow.com/a/15605404/650784) Ich versuche Jackson Joda Datum in meinen DTOs zu behandeln, aber ich habe Schwierigkeiten zu verstehen, wo der ObjectMapper-Code sollte Leben. Ich habe eine Reihe verschiedener Artikel über den ObjectMapper gelesen, aber alle scheinen sich mit älteren Versionen zu befassen. Ich kann das, was ich bereits gefunden habe, nehmen und es zur Arbeit hacken, aber ich wollte sehen, was als der richtige Weg angesehen wurde, dies mit Spring 3.2.2/Jackson 2/Jersey zu tun. Ich möchte darauf hinweisen, dass ich nur das joda time mapping Modul hinzufügen möchte, ich möchte keine anderen Anpassungen von jackson. Ich bin ein bisschen wie ein Spring Newb, also vergib mir, wenn das eine einfache und offensichtliche Antwort ist, die ich gerade verpasst habe.Wie konfiguriere ich einen Objekt-Mapper mit einem Modul für Jackson und Frühling

Antwort

6

Ich habe selber nie Frühling, aber ich hatte das gleiche Problem Resteasy Framework. Wenn ich das weiß, werde ich versuchen, Ihnen einige Antworten zu geben.

eines Ihrer Fragen zu beantworten, ObjectMapper „hat zu leben“, wenn Sie mit einer Serialisierung/Deserialisierung in/aus json Prozess zu tun haben. Zum Beispiel:

MyObject myObject = new MyObject(); 
ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(myObject); 

Wie in den Link wies darauf hin, Sie zur Verfügung gestellt, wenn Sie ein Modul zu Ihrem ObjectMapper hinzufügen möchten, müssen Sie nach dem Erstellen Ihrer Mapper die folgende Zeile hinzufügen:

mapper.registerModule(new AnyModuleYouNeed()); 

Jetzt Ich bin kein Spring-Benutzer, aber ich nehme an, Sie möchten, dass dieser Prozess automatisch ausgeführt wird, wenn der Frühling seinen eigenen Serialisierungs-/Deserialisierungsprozess bereitstellt.

fand ich diese auf dem Netz: http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html

In Ihrem Fall, ich denke nur Nummer 2 und Nummer 3 für Sie nützlich sind, und weil Sie nicht brauchen, einen benutzerdefinierten Serializer haben, aber Sie brauchen ein Modul zu Ihrem Mapper hinzuzufügen, ich glaube, die benutzerdefinierte ObjectMapper so aussehen sollte:

@Component 
public class CustomObjectMapper extends ObjectMapper { 
    public CustomObjectMapper() { 
     registerModule(new AnyModuleYouNeed()); 
    } 
} 

In der Web-Seite, die ich Sie darauf, sie alson über eine elegante Art und Weise spricht eine cusom ObjectMapper für Frühjahr 3.1 Benutzer zu registrieren : http://magicmonster.com/kb/prg/java/spring/webmvc/mvc_spring_config_namespace.html

Es kann nützlich sein.

Schließlich entschuldigt mein armes Englisch, und lassen Sie mich wissen, wenn Sie Ihr Problem gelöst haben.

+0

Vielen Dank, du hast mich gerettet viel Zeit. Besonders für den zweiten Link. Aber für Jackson2 sollte es MappingJackson2HttpMessageConverter geben. – Roman

+0

Ich habe mehr oder weniger die gleiche Frage, bin aber immer noch unklar. Ist das Modul beim Start meines Servers registriert? Oder pro Anfrage? Wenn mein Code Serialisierung nur ein Haufen von @XmlElement Einträgen in POJOs ist, bedeutet, dass ich eine Mapper erstellen und sie in jedem pojo verwenden, wo ich JSONObject Unterstützung benötigen? Ich benutze nicht Frühling BTW – Amalgovinus

Verwandte Themen