JsonView視圖


同一個對象,在不同的場景,返回不同的屬性,如getUserById返回User對象包含password值,而getAllUsers返回User集合,不包含password值(通過接口查看顯示,序列化的時候直接忽略該屬性,而非返回null),這些場景稱為視圖,使用JsonView:
三個步驟:
1.通過在對象中定義多個接口來定義多個視圖(場景),注:子接口會把繼承的父接口展示的屬性也展示
2.在屬性的get方法上指明視圖(場景)
3.在controller方法上指定視圖(場景)
package com.example.security.entity ;
import com.fasterxml.jackson.annotation. JsonView ;
public class User {
/**
* 步驟1
*/
public interface UsernameView {}
public interface UsernamePasswordView extends UsernameView {}
private String username ;
private String password ;
/**
* 步驟2
* @return
*/
@JsonView (UsernameView. class )
public String getUsername () {
return username ;
}
public void setUsername (String username) {
this . username = username ;
}
/**
* 步驟2
* @return
*/
@JsonView (UsernamePasswordView. class ) //子接口會展示自己注解的屬性和其父接口注解的屬性
public String getPassword () {
return password ;
}
public void setPassword (String password) {
this . password = password ;
}
}
/**
* 步驟3
* @return
*/
@RequestMapping ( "/users" )
@JsonView (User.UsernameView. class )
public List<User> users () {
return Arrays. asList ( new User( "wzs" , "923286" ) ,
new User( "wmm" , "mm615678" ) ,
new User( "root" , "iMC123" )) ;
}
@GetMapping ( "/user" )
@JsonView (User.UsernamePasswordView. class )
public User user (User user) {
return user ;
}


免責聲明!

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



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