spring json视图的处理【针对password这种隐藏属性返回】

来源:互联网 发布:php cms管理系统 编辑:程序博客网 时间:2024/05/22 06:29

今天在翻阅spring文档 spring 4.3.9 web功能 点击跳转 的时候发现了倒数第三条有一个新的改动。
JsonView 点击跳转
在我们现实开发中,经常会出现对一些字段隐藏掉,返回的json不显示此字段,比如password 。
这有时候比如我就是写DTO或者设置字段为null
麻烦是麻烦的

@RestControllerpublic class UserController {    @GetMapping("/user")    @JsonView(User.WithoutPasswordView.class)    public User getUser() {        return new User("eric", "7!jd#h23");    }}public class User {    //没有password字段的视图    public interface WithoutPasswordView {};    //有password字段的视图    public interface WithPasswordView extends WithoutPasswordView {};    private String username;    private String password;    public User() {    }    public User(String username, String password) {        this.username = username;        this.password = password;    }    @JsonView(WithoutPasswordView.class)    public String getUsername() {        return this.username;    }    @JsonView(WithPasswordView.class)    public String getPassword() {        return this.password;    }}

结果【WithoutPasswordView】

{    "username": "eric"}

结果【WithPasswordView】

{    "username": "eric",    "password": "7!jd#h23"}

getUsername() 方法挂了注解 @JsonView(WithoutPasswordView.class),因为WithPasswordView继承于WithoutPasswordView,所以WithPasswordViewy也会有username字段
但是getPassword()又挂了WithPasswordView,所以WithPassword有两个字段[name,pasword],但是WithoutPasswordView没有password字段,只有username字段

这种只针对jackson
不得不说现在的spring语法糖越来越多了。。。

阅读全文
0 0