Passen Sie den JSON-Serializer an den Standard von Jersey an?

8

Ich verwende Jersey, um RESTful Webservice zu implementieren. Jetzt ist der MediaType, in dem ich Daten zurückgebe, JSON.

%Vor%

Hier setze ich CONTENT_TYPE auf json und meine Entity wird nach Jersey Framework in json konvertiert.

Jetzt möchte ich meine JSON-Antwort anpassen.

ZB: Ich möchte die leeren Elemente entfernen oder den Schlüsselname meines Json-Objekts ändern. Standard Jersey's Json Konvertierung:

%Vor%

Was ich will:

%Vor%

Ich weiß, dass ich Jackson's eigene ObjectMapper benutzen kann, um meinen Json nach meinen Bedürfnissen anzupassen.

Aber ist das der Standard Weg, es zu tun, wenn ich JSON-Konvertierung auf eine andere Weise als die Standardkonvertierung von Jersey haben möchte?

Oder kann ich Parameter in Jerseys ObjectMapper ändern?

Sollte ich mein eigenes ObjectMapper benutzen?

    
Siddharth Trikha 20.05.2016, 06:37
quelle

1 Antwort

3

Hier sind meine Gedanken über Ihre Möglichkeiten. Vor allem

  

Also sollte ich für jede andere Antwort ObjectMapper konfigurieren   anders?

Wenn Sie beide Versionen von json an verschiedenen Stellen verwenden möchten,

%Vor%

Dann musst du mehrere ObjectMappers verwenden.

Aber wenn du nur 1 Repräsentation überall benutzen willst, dann wirst du wahrscheinlich in der Lage sein, Jackson einmal mit speziellem Mixin für deine Klassen einzurichten. Wie auch immer, hier ist, wie Sie beide Möglichkeiten tun können: Und schauen wir uns einfach Fall mit nur 1 Json-Version benötigt

%Vor%

Dieser Code erzeugt überall kurze POJO-Felder. und um ein anderes Verhalten für unterschiedliche Anforderungen zu implementieren, müssen wir neue benutzerdefinierte Annotationen hinzufügen:

%Vor%

Controller wird wie folgt aussehen:

%Vor%

Und unser MixInJacksonJsonProvider wird noch 2 @Override haben:

%Vor%

Hier ist ein Demo-Code für Sie: Ссылка

    
varren 20.05.2016, 14:07
quelle

Tags und Links