@JsonView的使用

@JsonView注解可以用来过滤序列化对象的字段属性,可以用来定义返回相同的Json的时候,过滤掉哪些属性,可能说的不是很清楚,打个比方,现在在Controller中有两个方法都是以Json的形式返回的User对象(有userName和password两个属性),但是有一个方法我只想返回User对象的userName,不想返回password,有一个方法我userName和password都要返回。这个时候就可以用上@JsonView注解了。

在User类中定义两个接口用来声明多个视图

在User对象中定义了UserDetail和UserInfo两个接口,其实也就是一种标记的作用;这里UserInfo继承了UserDetail,有了这个继承关系的话,当我想显示UserInfo的时候,也会将UserDetail里面定义的字段也显示出来。

在类的get方法上指定视图

/**
 * Created by Dongguabai on 2018-06-21 0:28
 */
@Setter
public class User {
    public interface UserDetail{}

    public interface UserInfo extends UserDetail{}

    /**
     * 在UserInfo视图上展示userNamw这个字段;
     * 要注意的是UserInfo继承UserDetail,所以展示的时候也会展示UserDetail视图中的字段,也就是password字段
     * @return
     */
    @JsonView(UserInfo.class)
    public String getUserName() {
        return userName;
    }

    /**
     * 在UserDetail视图上展示password字段
     * @return
     */
    @JsonView(UserDetail.class)
    public String getPassword() {
        return password;
    }

    private String userName;
    private String password;

}

在Controller方法上指定视图

测试结果:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值