小编Mar*_*rey的帖子

Jackson2 PropertyFilter用于嵌套属性,还是还有另一种方法?

我目前正在寻找一种以多种方式序列化对象的方法,而又不直接干扰类。(如添加大量注释)

想象一个这样的类:

class User {
  String id;
  String name;
  String email;
  ...
  User manager;
}
Run Code Online (Sandbox Code Playgroud)

SimplePropertyFilter提供了几乎所需的功能,但是问题在于此过滤器会忽略当前对象的级别,并在每个对象上应用所有已定义的过滤器,无论它是否嵌套。

我不仅限于过滤器,但我想避免为每个所需的json响应编写多个类。有没有办法用Jackson2实现这种行为?


如果我们想序列化一个编辑表单,我们需要所有字段,但是对于用户列表,我们可能只需要其中一些字段。

但是对于经理,我们总是需要“仅” idname。这就是寻找解决方案的地方。

JSON输出应如下所示:

{
  "id" : "20",
  "login" : "USER20",
  "name" : "User 20",
  "email" : "user20@no.where",
  "manager" : {
     "id" : "1",
     "name" : "Administrator"
  }
}
Run Code Online (Sandbox Code Playgroud)

我觉得属性过滤器方法使我非常接近所需的解决方案,但是从我发现的结果来看,您只能定义“简单”属性。

public class UserJsonWriter {
  public String toJson() {
    SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("id", "login", "name", "email", "manager");
    // Unfortunatly I cannot write:
    SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept("id", "login", "name", "email", …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson

5
推荐指数
1
解决办法
1315
查看次数

标签 统计

jackson ×1

java ×1

json ×1

spring ×1