JsonView视图
发布时间:2020-12-16 18:39:31 所属栏目:百科 来源:网络整理
导读:同一个对象,在不同的场景,返回不同的属性,如getUserById返回User对象包含password值,而getAllUsers返回User集合,不包含password值(通过接口查看显示,序列化的时候直接忽略该属性,而非返回null),这些场景称为视图,使用JsonView: 三个步骤: 1.通
同一个对象,在不同的场景,返回不同的属性,如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
;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |