如何根据Spring MVC中的请求参数定制Jackson JSON序列化

问题描述:

我正在开发一个项目,我们想要将custom ContextAttributes传递给Jackson ObjectMapper#writer()方法。如何根据Spring MVC中的请求参数定制Jackson JSON序列化

基本上我在想像一些位于控制器和序列化之间的全局代码段。它应该看看HttpServletRequest,获取一个参数然后钩入序列化。

编写自定义HttpMessageConverter似乎不够,因为它无法访问请求。

您可以访问请求这样

RequestAttributes ra = RequestContextHolder.getRequestAttributes(); 
if (ra instanceof ServletRequestAttributes) { 
     HttpServletRequest request = ((ServletRequestAttributes)ra).getRequest(); 
} 

或者,您可以从您的自定义HttpMessageConverter一个ThreadLocal存储和acccess添加过滤器与存储请求。

+0

谢谢你,为我工作。 – user1915201

您可以创建一个过滤器并将其应用于所有网址,并实现过滤器中的逻辑。该过滤器可以访问请求对象

public class FilterName extends GenericFilterBean { 
 
    @Override 
 
    public void doFilter(ServletRequest req, ServletResponse res, 
 
    FilterChain chain) { 
 
    //TODP 
 
    } 
 
}

,这增加了安全XML