業務場景:比如說一個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; } }
在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; }
在controller中聲明視圖 自己看下結果吧。