【问题标题】:Jackson & Spring MVC: dynamically filter child objects of an objectJackson & Spring MVC:动态过滤对象的子对象
【发布时间】:2014-04-27 22:57:46
【问题描述】:

我过去使用过 spring MVC、jackson 和 hibernate,不,我必须构建一个 rest 后端,我正在考虑坚持使用相同的技术。

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

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"}]}

或者动态选择只提供角色的 id 而不是完整的对象

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

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

谢谢!!

【问题讨论】:

  • 出于好奇,你为什么要这样做?
  • 我也在使用休眠,所以当我返回一个对象时,杰克逊也会发布该对象的所有子对象(我最终得到所有 DB 发布),所以我想动态发布整个对象子对象或只需 de childs ID,以便客户知道如何要求他们。

标签: spring-mvc jackson


【解决方案1】:

你可以使用我写的叫Squiggly Filter

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2020-06-24
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多