【问题标题】:JsonView ignore all but annotated propertiesJsonView 忽略所有未注释的属性
【发布时间】:2019-12-09 16:07:27
【问题描述】:

我有以下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; }
    

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

【问题讨论】:

    标签: spring-boot jackson json-view


    【解决方案1】:

    如果您对 name-only 案例只有一个视图,这是可能的;

    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();
    }
    

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


    更多关于@JsonViewSpringhere在主题6下。在 Spring 中使用 JSON 视图,也在 spring.io

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 2012-11-22
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多