杰克逊& Spring MVC:动态过滤对象的子对象

时间:2014-04-27 22:57:46

标签: spring-mvc jackson

我过去使用过Spring MVC,jackson和hibernate,我没有必要建立一个休息后端而且我正在考虑坚持使用相同的技术。

过去我无法做的两件事就是切断了杰克逊序列化对象的深度。例如,假设我有两个类:

public class Person{
    public int id;
    public String name;
    List<Role> roles;

}


public class Role{
    public int id;
    public String roleName;

}

所以我想用jackson和spring mvc动态决定何时序列化Person是否给出带有完整序列化对象的角色列表,或者只是对象id,例如:

{id:1, name:"jhon", roles:[{id:1, roleName:"admin"},{id:2, roleName:"user"}]}

OR动态选择仅给出角色的ID而不是完整对象

{id:1, name:"jhon", roles:[{id:1},{id:2}]}

有没有办法用杰克逊过滤器和Spring mvc来实现这一目标?我做了一些研究,但我不知道该去哪,你能指点我正确的方向吗? :)

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使用我写的名为Squiggly Filter

此库允许您根据查询字符串参数动态过滤属性。

在您的情况下,您可以通过在查询字符串上执行以下操作来仅选择角色的ID:

/people/1?fields=**,roles{id}