JsonView注解的使用

JsonView注解的使用

Scroll Down

作用:

@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。

使用:

  1. 使用接口来声明多个视图
  2. 在pojo的get方法上指定视图
  3. 在Controller方法上指定视图

示例:

/**
 * Created by linchaokun on 2018/8/9.
 */
@Data
public class User {

    /**
     * 用户简单视图
     */
    public interface UserSimpleView{}

    /**
     * 用户详情视图
     */
    public interface UserDetailsView extends UserSimpleView{}

    @JsonView(UserSimpleView.class)
    private String id;

    @JsonView(UserSimpleView.class)
    private String username;

    @JsonView(UserDetailsView.class)
    private String password;
}
/**
 * Created by linchaokun on 2018/8/9.
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping
    @JsonView(User.UserSimpleView.class)
    public List<User> query(UserQueryForm queryForm, @PageableDefault(page = 1,size = 10,sort = "username,desc") Pageable pageable){

        List<User> users = Arrays.asList(new User(queryForm.getUsername(),"111"), new User(queryForm.getUsername(),"222"), new User(queryForm.getUsername(),"333"));

        return users;
    }

    @GetMapping("/{id}")
    @JsonView(User.UserDetailsView.class)
    public User getUserInfo(@PathVariable String id){
        User user = new User();
        user.setId(id);
        user.setUsername("chaokun");
        user.setPassword("111");
        return user;
    }
}