zoukankan      html  css  js  c++  java
  • 利用@jsonView注解来实现自定义返回字段

    业务场景:比如说一个User对象,有两个字段,一个username,一个password,有一个获取用户信息的接口要返回这个User列表,但是不想要这个User列表的password字段。

    还有一个接口要获取这个User列表,要全部字段。

    解决场景:我们可以有多种方法,比如说获取list之后把user列表的密码全部设为空,然后再用其他注解来设置  为空的字段不显示

    还可以在sql中就不查password字段。

    但是  我们要介绍这个注解来实现这个功能。@jsonView  

    需要三步即可:

    • 第一:用接口来声明多个视图
    • 第二:在值对象的get方法上指定视图
    • 第三:在controller方法上指定视图

    话不多说~~~看代码------》

    User.java

    package com.imooc;
    
    import com.fasterxml.jackson.annotation.JsonView;
    import lombok.AllArgsConstructor;
    import lombok.Setter;
    
    /**
     * Created by 敲代码的卡卡罗特
     * on 2018/4/14 22:58.
     */
    @Setter
    @AllArgsConstructor
    public class User {
        public interface UserInfo{};
        public interface UserDetail extends UserInfo{};
        private String name;
        private String password;
        @JsonView(UserInfo.class)
        public String getName() {
            return name;
        }
        @JsonView(UserDetail.class)
        public String getPassword() {
            return password;
        }
    }
    View Code

    在user对象中声明两个接口(视图),一个继承另一个,你懂得!!!然后在字段的get方法上声明视图

    Controller.java

    @GetMapping("/hello")
        @JsonView(User.UserInfo.class)
        public HashMap hello() {
            HashMap hashMap = new HashMap();
            User user1 = new User("liu","123");
            User user2 = new User("zhang","456");
            hashMap.put("u1",user1);
            hashMap.put("u2",user2);
            return hashMap;
        }
    View Code

    在controller中声明视图   自己看下结果吧。

  • 相关阅读:
    FreeMarker缓存处理
    freemarker入门实例与源码研究准备工作
    Freemarker常用技巧(二)
    Freemarker常用技巧(一)
    Hessian与Spring整合
    Hessian学习
    数组常见的面试题
    关于排序的实现
    Redis与Memcache的区别
    JDBC编程步骤
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8836617.html
Copyright © 2011-2022 走看看