Spring konfiguriert das @ResponseBody JSON-Format
Vorstellen, ich habe diese annotierte Methode im Frühjahr 3 @Controller
@RequestMapping("")
public @ResponseBody MyObject index(@RequestBody OtherObject obj) {
MyObject result = ...;
return result;
}
Aber ich brauche konfigurieren Sie die Ausgabe json-format, ebenso wie wenn ich tun:
ObjectMapper om = new ObjectMapper();
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, true);
om.getSerializationConfig()
.setSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT);
om.getSerializationConfig()
.set(SerializationConfig.Feature.INDENT_OUTPUT, false);
Gibt es eine Möglichkeit, konfigurieren Sie dieses Verhalten?
Ich habe ein paar Fragen, aber ich bin nicht sicher, wie Sie Sie anpassen können, um zu meinem konkreten Fall:
Danke !
InformationsquelleAutor der Frage Guido García | 2011-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Leute, die mit Java-basierte Spring-Konfiguration:
Ich bin mit
MappingJackson2HttpMessageConverter
- was ist aus fasterxml.Wenn Sie verwenden möchten codehaus-jackson-mapper, statt diese mit einer
MappingJacksonHttpMessageConverter
InformationsquelleAutor der Antwort Õzbek
Ich needeed zu lösen sehr ähnliches problem, die Konfiguration von Jackson-Mapper "nicht serialisieren null-Werte für Christus' s Willen!!!".
Ich wollte nicht zu verlassen Lust mvc:annotation-driven-tag, so fand ich, wie zu konfigurieren Jackson - ObjectMapper ohne entfernen mvc:annotation-driven und das hinzufügen nicht wirklich Lust ContentNegotiatingViewResolver.
Das schöne daran ist, dass Sie nicht haben, um zu schreiben, beliebigen Java-code selbst!
Und hier ist die XML-Konfiguration (nicht zu verwechseln mit verschiedenen namespaces von Jackson Klassen, ich benutzte einfach neue Jakson 2.x-Bibliothek ... das gleiche sollte auch die Arbeit mit Jackson 1.x-Bibliotheken):
InformationsquelleAutor der Antwort tkuty
AngerClown wies mich in die richtige Richtung.
Dies ist, was ich schließlich auch Tat, nur falls jemand es nützlich finden.
Ich habe noch, um herauszufinden, wie konfigurieren Sie die anderen Eigenschaften, wie:
InformationsquelleAutor der Antwort Guido García
In spring3.2, neue Lösung wird eingeführt durch: http://static.springsource.org/spring/docs/3.2.0.BUILD-SNAPSHOT/api/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.html ,
das unten ist mein Beispiel:
InformationsquelleAutor der Antwort Tody.Lu
Für Spring version 4.1.3+
Ich habe versucht, Jama Lösung, aber dann alle Antworten wurden zurückgeschickt mit Content-type 'application/json', einschließlich der wichtigsten, der generierten HTML-Seite.
Überschreiben
configureMessageConverters(...)
verhindert, dass die Feder von der Einrichtung des Standard-Konvertern. Frühjahr 4.1.3 ist eine Modifikation der bereits konfiguriert Wandler durch überschreibenextendMessageConverters(...)
:InformationsquelleAutor der Antwort Melv
Schrieb ich meine eigenen FactoryBean, die instanziiert einen ObjectMapper (vereinfachte version):
Und die Verwendung in der spring-Konfiguration:
InformationsquelleAutor der Antwort oehmiche
Nicht die Frage beantworten, aber das ist die top-google-Ergebnis.
Wenn jemand hier her kommt und will, tun Sie es für den Frühling 4 (wie es mir passiert ist), können Sie die annotation
auf die Rückkehr der Klasse.
InformationsquelleAutor der Antwort Mário Fernandes
Werfen Sie einen Blick auf Rick Hightower ' s Ansatz. Sein Ansatz vermeidet konfigurieren ObjectMapper als singleton und ermöglicht das filtern der JSON-Antwort für das gleiche Objekt auf unterschiedliche Weise pro Anfrage-Methode.
http://www.jroller.com/RickHigh/entry/filtering_json_feeds_from_spring
InformationsquelleAutor der Antwort Greg Sheremeta
Konfigurieren Sie die ObjectMapper als bean in der Spring-xml-Datei. Was hält eine Referenz auf das ObjectMapper ist die
MappingJacksonJsonView
Klasse. Sie müssen dann befestigen Sie den Blick auf ein ViewResolver.Etwas wie dies funktionieren sollte:
Wo
customObjectMapper
ist definiert an anderer Stelle in der xml-Datei. Beachten Sie, dass Sie direkt festlegen, Spring property Werte mit den Enums Jackson definiert; siehe diese Frage.Auch, ContentNegotiatingViewResolver ist wohl nicht erforderlich, es ist nur der code, den ich verwende, in ein bestehendes Projekt.
InformationsquelleAutor der Antwort AngerClown
Ja, aber was passiert, wenn Sie beginnen mit Mixins in Verbindung zum Beispiel, Sie kann mit ObjectMapper als ein singleton, weil Sie der Anwendung der Konfiguration Global. So werden Sie hinzufügen oder Einstellung der mixin-Klassen auf die gleichen ObjectMapper Instanz?
InformationsquelleAutor der Antwort serge
Können Sie Folgendes tun(jackson-version < 2):
Custom mapper-Klasse:
Frühjahr config:
InformationsquelleAutor der Antwort I V