JsonView会忽略所有带注释的属性

时间:2019-08-01 05:55:24

标签: spring-boot jackson json-view

我具有以下JsonView配置:

public class JsonViews {

    public static class AdminView {
    }

    public static class PublicView extends AdminView {
    }
}

我有以下实体:

public class UserEntity {

    @JsonView(JsonViews.AdminView.class)
    private int id;

    @JsonView(JsonViews.PublicView.class)
    private int name;

    // getters / setters
}

在我的控制器中,我有以下方法:

  • 我希望此方法返回所有属性

    @JsonView(JsonViews.AdminView.class)
    public List<User> getAllOnlyForAdmin { return foo; }
    
  • 我希望它仅返回name属性

    @JsonView(JsonViews.PublicView.class)
    public List<User> getAllOnlyForAdmin { return foo; }
    

可能吗?如果没有,还有其他解决方法吗?

1 个答案:

答案 0 :(得分:1)

对于仅仅名称情况,只有一个视图是可能的;

public class JsonViews {

    public static class NameView {
    }
}

和实体;

public class UserEntity {

    private int id;

    @JsonView(JsonViews.NameView.class)
    private int name;

    // getters / setters
}

和控制器方法;

@JsonView(JsonViews.NameView.class)
@RequestMapping("/admin/users")
public List<User> getUsersWithOnlyName() {
    return userGetter.getUsers();
}

对于每个User,只会为您提供名称字段,并且

@RequestMapping("/users")
public List<User> getUsers() {
    return userGetter.getUsers();
}

将为您提供整个实体,这是默认行为。


有关主题 6下@JsonView hereSpring的更多信息。在spring.io

上将Spring View与JSON视图结合使用