2015-01-31 70 views
2

我是using a library,它會創建一個ObjectMapper並將其自身的一些Module添加到此映射器中。我希望這些模塊中的序列化器能夠很好地打印。但是,我唯一的配置這個映射器的途徑是通過builder that lets me add my own modules。我可以使用我的能力將模塊添加到ObjectMapper以將其配置爲漂亮打印嗎?我沒有看到任何方法或屬性SimpleModule暗示我可以。我可以通過添加模塊來定製Jackson ObjectMapper嗎?

回答

1

是的,如果您可以註冊ModuleObjectMapper,您可以操縱映射器。覆蓋在ModulesetupModule()方法,然後使用getOwner()Module.SetupContext,你得到:

GraphSONMapper mapper = GraphSONMapper.build().addCustomModule(new SimpleModule() {           
    public void setupModule(com.fasterxml.jackson.databind.Module.SetupContext context) {          
     ObjectMapper mapper = context.getOwner();                    
     mapper.enable(SerializationFeature.INDENT_OUTPUT);                 
    }                               
}).create();                             
GraphSONWriter writer = graph.io().graphSONWriter().mapper(mapper).create(); 

getOwner()文檔建議,除非你有你不應該這樣做。

+0

值得注意的是啓用'SerializationFeature.INDENT_OUTPUT' [只能啓用默認漂亮打印功能](http://fasterxml.github.io/jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind /SerializationFeature.html#INDENT_OUTPUT),其中包含兩行縮進。待定如何優雅地壓倒縮進。 – 2015-02-02 07:40:40

+0

我在考慮這個問題屬於'getOwner()'中文檔的「或有疏漏」部分。 'GraphSONMapper'具有內部硬編碼的ObjectMapper'的實例化,而不是抽象的,使得看起來不可能直接配置映射器,但必須有一種方法。 – 2015-02-02 07:58:00

相關問題