我可以在jackson BeanSerializerModifier中访问请求参数吗?

时间:2015-11-07 10:07:20

标签: jersey jackson

我正在使用Jersey来实现rest api和Jackson以提供JSON支持。我试图通过覆盖BeanSerializerModifier.changeProperties方法在序列化之前删除某些属性。

但删除属性将基于查询参数。有没有办法在我的实现中访问查询参数?

1 个答案:

答案 0 :(得分:1)

使用BeanSerializerModifier本身会变得复杂,因为该方法仅在第一次构造JsonSerializer时被调用一次。至于传递查询参数,您可以使用上下文属性和ObjectWriter(从ObjectMapper构造)传递它们,但这意味着从Jersey接管相当多的序列化自动化。

有一种机制可以帮助修改序列化方面,而无需接管整个过程:使用ObjectWriterModifier注册ObjectWriterInjector。这些是Jackson JAX-RS提供商的一部分,在Jackson 2.3中添加。在不知道更多细节的情况下,我不知道这会有多容易;部分问题是查询参数更多是输入端的东西,因此没有从输出处理端直接访问它们。