Verwenden von @JsonView mit Spring MVC

8

Ich verwende die folgende Bean-Definition, um meine Spring-App in JSON zu sprechen

%Vor%

Ist es mit dieser Message Converter-Bean möglich, die @ JsonView-Annotation zu verwenden?

    
Erik 24.04.2011, 18:12
quelle

2 Antworten

18

@JsonView wird bereits ab Version 1.4 im Jackson JSON-Prozessor unterstützt.

Neu Bearbeiten: Aktualisiert für Jackson 1.9.12

Laut v1.8.4 Dokumentation Die Funktion, die ich writeValueUsingView verwendet habe, ist jetzt Veraltet Verwenden Sie ObjectMapper.viewWriter ( java.lang.Class) stattdessen ... aber das war auch Veraltet Seit 1.9 benutze stattdessen writerWithView (Class) ! (Siehe v1.9.9 Dokumentation )

Hier ist ein aktuelles Beispiel, getestet mit Spring 3.2.0 und Jackson 1.9.12, welches einfach {id: 1} zurückgibt und nicht das erweiterte {name: "name"} , da es .writerWithView(Views.Public.class) benutzt. Der Wechsel zu Views.ExtendPublic.class führt zu {"id":1,"name":"name"}

%Vor%

Vorherige Bearbeitung: Sie müssen die ObjectMapper instanziieren und das Objekt mit einer benutzerdefinierten Ansicht ausschreiben, wie in angezeigt hier oder in diesem Beispiel:

Ansichten definieren:

%Vor%

Verwenden Sie Ansichten:

%Vor%

Wenn Sie Jackson & gt; = 1.7 verwenden, stellen Sie möglicherweise fest, dass @JSONFilter Ihren Anforderungen besser entspricht.

>     
andyb 26.04.2011, 08:25
quelle
7

@JsonView-Annotation wurde für Spring nicht unterstützt, aber dieses Problem wurde behoben!
Folgen Sie diesem

  

Fügen Sie Unterstützung für Jackson-Serialisierungsansichten hinzu

     

Spring MVC unterstützt nun Jackons Serialisierungsansichten zum Rendern   verschiedene Teilmengen desselben POJO von verschiedenen Controllern   Methoden (z. B. detaillierte Seite vs Übersichtsansicht).   Problem: SPR-7156

Dies ist die SPR-7156 .

  

Status: Gelöst

     

Beschreibung

     

Jacksons JSONView Annotation erlaubt dem Entwickler zu kontrollieren, welche Aspekte einer Methode serialisiert werden. Bei der aktuellen Implementierung muss der Jackson-View-Writer verwendet werden, aber der Inhaltstyp ist nicht verfügbar. Es wäre besser, wenn als Teil der RequestBody Annotation eine JSONView angegeben werden könnte.

Verfügbar unter Frühling ver & gt; = 4.1

Danke Frühling!

    
George Siggouroglou 17.06.2014 11:38
quelle

Tags und Links