Java 使用Jackson序列化属性时应用JsonView

Java 使用Jackson序列化属性时应用JsonView,java,jackson,Java,Jackson,我有以下要序列化的类 class User { private String username; @JsonView(Views.Default.class) private List<User> followers; } 其思想是获取一个用户并显示追随者列表(用户类型),但不包含followers字段 { "username": "aaaaa", "followers": [ { "username" : "bbbbb" }, {

我有以下要序列化的类

class User {

    private String username;
    @JsonView(Views.Default.class)
    private List<User> followers;
}
其思想是获取一个用户并显示追随者列表(用户类型),但不包含
followers
字段

{
  "username": "aaaaa",
  "followers": [
    { "username" : "bbbbb" },
    { "username" : "ccccc" }
  ]
}
当序列化
用户
对象时,告诉Jackson在
followers
属性上应用
Follower
视图的最佳方法是什么

在当前配置中,我仍然可以在用户数组中看到
followers
属性


谢谢。

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

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

因为您需要使用视图而不是
Default
(或其子类):视图用于包含。

没有followers属性意味着什么?是否仅返回json数组作为响应?@eg04lt3r这意味着必须使用
视图.followers.class
视图对
followers
中的用户对象进行反序列化
followers
属性将在外部对象上可见,但在内部对象中不可见。如果我理解正确,您希望在序列化时在用户的子集合中隐藏followers属性,对吗?@eg04lt3r!我认为你应该使用某种过滤器,请检查这个链接。它可能会帮助你,我想如果没有过滤器,就无法解决这个问题。
String json = mapper.writerWithView(Views.Compact.class)
   .writeValueAsJson(user);