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

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

@RestController
public 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语法糖越来越多了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值