在与杰克逊序列化财产时应用JsonView

时间:2016-10-06 22:00:26

标签: java jackson

我有以下要序列化的课程。

class User {

    private String username;
    @JsonView(Views.Default.class)
    private List<User> followers;
}

视图定义如下:

class Views {
    static class Default { }
    static class Follower { } 
}

我们的想法是获取用户并显示关注者列表(用户类型)但没有followers字段。

{
  "username": "aaaaa",
  "followers": [
    { "username" : "bbbbb" },
    { "username" : "ccccc" }
  ]
}

在序列化Follower对象时,告诉Jackson在followers属性上应用User视图的最佳方法是什么?

使用当前配置,我仍然会在用户数组中看到followers属性。

感谢。

1 个答案:

答案 0 :(得分:1)

您需要使用ObjectWriter而不是ObjectMapper来指定用于序列化的活动视图。所以,例如:

String json = mapper.writerWithView(Views.Compact.class)
   .writeValueAsJson(user);

因为您需要使用Default(或其子类)以外的视图:视图用于包含。