利用@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中聲明視圖   自己看下結果吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM