Spring MVC Rest:如何在Json和XML中实现部分响应?

时间:2012-09-26 19:22:10

标签: spring rest spring-mvc jackson xstream

我需要忽略基于用户输入/或Spring安全角色的对象响应的某些属性的序列化(JSon / Jackson和XML / XStream)(就像你没有权限看到这个字段的内容一样) ,但所有其他人都可以等)。在Spring MVC Rest中如何做到这一点的最佳方法是什么? 其他方法仅显示与api用户相关的属性,如此处所述http://googlecode.blogspot.com.br/2010/03/making-apis-faster-introducing-partial.html

1 个答案:

答案 0 :(得分:1)

如果您使用的是Jackson,可以使用以下选项来修改Json序列化:

  1. 使用@JsonIgnore注释 - 但是,这是静态过滤,并且不允许您根据需要实施基于规则的过滤

  2. 使用@JsonFilter - 这将允许您实现一个接口,您可以在其中提供序列化过滤逻辑。你可能会发现这个解决方案太重了。

  3. 我经常解决这个问题的方法是从我的Controller方法而不是底层对象返回一个Map。您可以编写处理代码,将对象中的相关字段放入Map中,从而使您可以完全控制序列化的内容。您可以在Object上包含一个方法来进行转换。该方法可能如下所示:

    // RequestObj is whatever 'input' object that indicates what should be filtered
    public Map<String,Object> convertToMapForRequest(RequestObj request){
        // Build return map based on 'this' and request
    }