2017-10-11 237 views
0

我使用Jackson 2.8進行REST服務響應的序列化。爲了防止在大多數服務相關的Javascript(用來存儲數量爲64位IEEE 754浮點值)數目損壞我想申請以下JsonGenerator功能領域屈指可數的如何禁用某些字段的Jackson序列化功能WRITE_NUMBERS_AS_STRINGS?

objectMapper.configure(WRITE_NUMBERS_AS_STRINGS, true); 

值是不容易IEEE 754轉換錯誤。但是,當它們作爲字符串序列化時,會導致客戶端應用程序出現錯誤,其中的重構(在這種情況下)可能是單調乏味且更好避免的。

我使用JsonSerialize註釋

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

,但沒有成功嘗試。看起來WRITE_NUMBERS_AS_STRINGS優先於註釋。

問題是如何(如果可能的話)配置WRITE_NUMBERS_AS_STRINGS功能應用的規則中的某些排除項?

回答

1

從傑克遜2個註解documentation

@JsonRawValue:可用於每個屬性的標記來指定 的屬性的值是要被包括在序列化「」準確「」 原樣,與沒有逃脫或裝飾

看起來像@JsonRawValue即使與WRITE_NUMBERS_AS_STRINGS適用於您的情況。


另一種選擇是使用自定義序列,如果你有這樣的事情在你的POJO Map<String, Long> field;,因爲你不能用任何默認註釋到達地圖的鍵/值。

+0

感謝@JsonRawValue - 它幫助。我在發佈問題之前嘗試了自定義序列化器類 - 它沒有 – AlexK

相關問題