@JsonView的使用

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

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

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

@JsonView的使用_第1张图片

在类的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方法上指定视图

@JsonView的使用_第2张图片

测试结果:

@JsonView的使用_第3张图片

@JsonView的使用_第4张图片

你可能感兴趣的:(serialize,spring,mvc)