2017-08-29 92 views
1

是否可以配置Jackson根據屬性名稱忽略對象的屬性?Jackson - 忽略具有特定名稱的屬性

我使用Jackson序列化Hibernate實體,我的JSON文件上的每個對象都帶有「hibernateLazyInitializer」屬性,我想忽略它。還有很多類有一個「getFieldsValues」方法,我也想忽略它。

我知道我可以使用傑克遜註釋來忽略某些屬性,但這將是很多手工。但在這種情況下,我需要IGNORE一個屬性,它是許多對象的常見屬性,並且正在被Jackson自動分析。

回答

0

根據您的更新問題描述的意見,我會盡力提供更好的參考:

  • 帶有註釋的走向是最乾淨的方式,如涉及休眠增強的POJO的幾個職位描述
  • 一些可能會滿足的事情是在ObjectMapper中設置它,這應該導致空的(但是現在)字段 - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);。也許如果你將它與objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 結合起來,它可能會完全消除這些領域。
  • 最後,一個替代(但不好)的方法是通過註冊一個模塊來修改Jackson的行爲,該模塊爲所有類型的POJO應用JsonSerializer<T>的實例。在這種情況下,您將手動取消設置使用defaultSerializer創建的JsonNode中的字段。再次,這是一個壞主意。
+0

我需要將屬性名稱傳給傑克遜,以便他可以在他看到它的任何課程中忽略它。 –

+0

@DiegoVictordeJesus用視圖註釋標記一個字段,你可以在特定的場景中將它排除/包含在每個序列化/反序列化請求中(即,通過在de /序列化時將所需視圖傳遞給ObjectMapper)。這不能滿足你的需求嗎? – Sheinbergon

+0

@DiegoVictordeJesus請在這個問題上稍微擴展一下。爲什麼你在乎這個字段是否被反序列化? 請「不要低估」我,因爲我真的花時間嘗試和幫助你。 – Sheinbergon