Spring MVC支援Jackson的@JsonView註解來定製請求體和返回體的json。這個功能的實現和上一節@RestControllerAdvice例子類似,是透過JsonViewRequestBodyAdvice,JsonViewResponseBodyAdvice來實現的。它們是自動新增到IoC容器,而不是透過@RestControllerAdvice註冊的。
我們透過@JsonView在Person類中定義檢視:
@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; }}
定義兩個介面作為檢視,WithIdView繼承WithoutId檢視;定製兩個檢視對應需展示的屬性。我們在控制器中的檢驗:
@GetMapping("/jsonView")@JsonView(Person.WithoutIdView.class) //使用無id檢視public Person jsonView(@RequestBody Person person){ return person;}
最新評論