编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

34-Spring MVC的@JsonView

wxchong 2024-06-27 01:38:06 开源技术 30 ℃ 0 评论

上篇我们学习了《33-Spring MVC的REST控制器建言@RestControllerAdvice》,本篇我们学习@JsonView。

Spring MVC支持Jackson的@JsonView注解来定制请求体和返回体的json。这个功能的实现和上一节@RestControllerAdvice例子类似,是通过JsonViewRequestBodyAdviceJsonViewResponseBodyAdvice来实现的。它们是自动添加到IoC容器,而不是通过@RestControllerAdvice注册的。

我们通过@JsonViewPerson类中定义视图:

@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(exclude = {"name", "age"})
public class Person {
    public interface WithoutIdView {}; //1
    public interface WithIdView extends WithoutIdView {}; //1

    @NotNull(message = "id不能为空")
    private Long id;
    @Size(min = 3, max = 5, message = "name在3到5个字符之间")
    private String name;
    @Min(value = 18, message = "age不能低于18岁")
    private Integer age;

    @JsonView(WithIdView.class) //2
    public Long getId() {
        return id;
    }

    @JsonView(WithoutIdView.class)//2
    public String getName() {
        return name;
    }
    @JsonView(WithoutIdView.class)//2
    public Integer getAge() {
        return age;
    }
}
  1. 定义两个接口作为视图,WithIdView继承WithoutId视图
  2. 定制两个视图对应需展示的属性。

我们在控制器中的检验:

@GetMapping("/jsonView")
@JsonView(Person.WithoutIdView.class) //使用无id视图
public Person jsonView(@RequestBody Person person){
    return person;
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表