簡體   English   中英

Java映射對象到幾種變體JSON

[英]Java map object to several variants JSON

如何在沒有鏈DOMAIN_OBJECT-> DTO-> JSON的情況下將域對象映射到幾個不同的JSON對象(幾個DTO)? 我有一個大的領域對象和十多個表示形式。 當我使用structMap將域對象映射到特定的DTO,然后使用jackson將序列化到JSON時,我花費了大量時間。

是否有任何工具可以將域對象映射到不帶中間層DTO的服務器變體JSON?

這實際上取決於十多個變體是什么樣的。 有時,堅持DTO可能是最好的方法,如本答案所述 ,其中使用DTO定義REST API的約定。

另外,根據您的需要,您可以使用Jackson的@JsonView玩。 使用Spring? 這個答案可能會給您一些見解。

我真的不知道您的用例,但是請注意,如果您使用Jackson,我想您正在使用ObjectMapper ObjectMapper是一個昂貴的對象,您應該盡可能地重用(ergo,將其聲明為staticfinal ),因為當多次轉換同一對象時,它會在后台進行大量緩存。

更好的是,從ObjectMapper獲得ObjectWriter和/或ObjectReader ,它們是不可變的並且是線程安全的(如果要在運行時更改其配置,ObjectMapper會很棘手),它們應該可以提高性能。

最后一件事,但是我從來沒有走那么遠,您可以編寫自定義的序列化器/反序列化器,但是我看到復雜性明顯上升了(因此,維護起來會更加困難)。

如果使用的是字符串,請仔細檢查是否使用StringBuilder(或在多線程用例中使用StringBuffer),並僅在必要時進行日志記錄( if(logger.isDebugEnabled() { log.debug(...) } ),它們是導致表演下降的常見陷阱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM