我可以通过添加模块来自定义Jackson ObjectMapper吗?

时间:2015-01-31 19:54:50

标签: java jackson tinkerpop3

using a library创建了ObjectMapper并为此映射器添加了自己的ModuleObjectMapper。我希望这些模块中的序列化器能够打印出来。但是,我唯一可以通过builder that lets me add my own modules来配置此映射器。我可以使用我的能力将模块添加到{{1}}以将其配置为漂亮的打印吗?我没有看到SimpleModule的任何方法或属性表明我可以。

1 个答案:

答案 0 :(得分:1)

是的,如果您可以使用Module注册ObjectMapper,则可以操作映射器。覆盖setupModule()上的Module方法,然后使用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()的文档建议您不要这样做,除非必须这样做。