用于根据序列化的上下文筛选字段。将数据返回到 REST 客户端时,根据调用的 REST 服务,我们需要限制在使用相同的数据模型时将序列化哪些数据。@JsonView
假设我们要创建两个 REST 服务:
第一个服务返回一些用户信息,如名字和姓氏,但不返回附加到它的消息。
第二个服务返回来自第一个服务的所有信息,以及附加到当前用户的消息。
带注释的示例 POJO 类@JsonView
用户 Pojo 类
@JsonView(User.Views.Public.class)
public String getFirstname() {
return firstname;
}
@JsonView(User.Views.Public.class)
public String getLastname() {
return lastname;
}
消息 Pojo 类
@JsonView(User.Views.Internal.class)
public List<Message> getMessages() {
return messages;
}
休息控制器
@RestController
public class SimpleRestController {
@Autowired
SimpleService simpleService;
@RequestMapping(value = "/user/public", method = RequestMethod.GET)
@JsonView(User.Views.Public.class)
public User getUserWithPublicData() {
return simpleService.loadUser();
}
@RequestMapping(value = "/user/internal", method = RequestMethod.GET)
@JsonView(User.Views.Internal.class)
public User getUserWithInternalData() {
return simpleService.loadUser();
}
}