2017-10-11 3 views
0

Ich verwende Jackson 2.8 für die Serialisierung von REST-Services-Antworten. Um zu verhindern, Verfälschungen Zahlen im Zusammenhang mit Javascript (die Nummer speichern, wie 64-Bit IEEE 754 Gleitkomma-Werte) in die meisten Dienste möchte ich folgendes JsonGenerator EigenschaftWie zu deaktivieren Jackson Jackson Serialisierung Feature WRITE_NUMBERS_AS_STRINGS für bestimmte Feld?

objectMapper.configure(WRITE_NUMBERS_AS_STRINGS, true); 

Werte von wenigen Gebieten anzuwenden sind nicht anfällig für IEEE 754-Konvertierungsfehler Wenn sie jedoch als Strings serialisiert werden, führt dies zu Fehlern in der Client-App, deren Refactoring (in diesem Fall) mühsam sein und besser vermieden werden kann.

Ich habe versucht mit JsonSerialize Anmerkung

@JsonSerialize(as = int.class)  
int status; 

aber nicht gelingen. Es scheint, dass WRITE_NUMBERS_AS_STRINGS Vorrang vor der Anmerkung hat.

Die Frage ist, wie (wenn möglich) einige Ausschlüsse von der Regel von der Funktion WRITE_NUMBERS_AS_STRINGS angewendet konfigurieren?

Antwort

1

Von Jackson 2 Anmerkungen documentation:

@JsonRawValue: pro-Eigenschaft Marker, die verwendet werden können, um festzulegen, dass der Wert der Eigenschaft ist, wie es in der Serialisierung ‚‘ genau ‚‘ aufgenommen werden, mit kein Entkommen oder Dekoration

Sieht aus wie @JsonRawValue Werke für Ihren Fall sogar mit WRITE_NUMBERS_AS_STRINGS.


Eine weitere Option ist benutzerdefinierten Serializer zu verwenden, wenn Sie so etwas wie Map<String, Long> field; in Ihrem POJO haben, weil Sie keine Karten Schlüssel/Wert mit einer beliebigen Standard-Annotation erreichen.

+0

Danke für @JsonRawValue - es hat geholfen. Ich habe versucht, benutzerdefinierte Serializer-Klasse vor dem Posten der Frage - es nicht – AlexK

Verwandte Themen