我正在使用Jersey来实现rest api和Jackson以提供JSON支持。我试图通过覆盖BeanSerializerModifier.changeProperties方法在序列化之前删除某些属性。
但删除属性将基于查询参数。有没有办法在我的实现中访问查询参数?
答案 0 :(得分:1)
使用BeanSerializerModifier
本身会变得复杂,因为该方法仅在第一次构造JsonSerializer
时被调用一次。至于传递查询参数,您可以使用上下文属性和ObjectWriter
(从ObjectMapper
构造)传递它们,但这意味着从Jersey接管相当多的序列化自动化。
有一种机制可以帮助修改序列化方面,而无需接管整个过程:使用ObjectWriterModifier
注册ObjectWriterInjector
。这些是Jackson JAX-RS提供商的一部分,在Jackson 2.3中添加。在不知道更多细节的情况下,我不知道这会有多容易;部分问题是查询参数更多是输入端的东西,因此没有从输出处理端直接访问它们。