美文网首页
SpringMVC框架中@JsonView的使用

SpringMVC框架中@JsonView的使用

作者: 缓慢移动的蜗牛 | 来源:发表于2019-07-26 14:24 被阅读0次

简介

当我们使用SpringMVC做controller进行查询信息,以Json的数据格式返回前端时,对于同一个实体类,不同的接口要求返回不同的字段。例如:对于User类,/getDetail接口需要返回所有的字段,而getSimple则只需要用户名、手机号、邮箱等信息。为了解决这个Json数据的控制问题,我们可以使用JsonView注解进行开发。

但我们也可以不使用JsonView,针对不同的接口,我们自己定义不同VO类(只定义接口需要返回的字段),也可以解决这个问题。

JsonView使用步骤

在bean中的定义视图

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User implements Serializable {
    private static final long serialVersionUID = -8441401775719174836L;

    public interface UserSimpleView {}
    public interface UserDetailView extends UserSimpleView {}

    @JsonView(UserSimpleView.class)
    private String userName;

    @JsonView(UserDetailView.class)
    private String password;
}

在controller中的需要返回的视图

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {

    @GetMapping(value = {"","/"})
    @JsonView(User.UserSimpleView.class)
    public List<User> query(@RequestParam(value = "userName", required = false, defaultValue = "default")String userName){
        log.info("参数[{}]", userName);

        ArrayList<User> userList = Lists.newArrayList();

        userList.add(User.builder().userName("aaa").password("aaa").build());
        userList.add(User.builder().userName("bbb").password("bbb").build());
        userList.add(User.builder().userName("ccc").password("ccc").build());

        return userList;
    }
    
    @GetMapping("/{id}")
    @JsonView(User.UserDetailView.class)
    public User getById(@PathVariable(value = "id")String id){
        return User.builder().userName("tom").password("tom&jerry").build();
    }
}

相关文章

网友评论

      本文标题:SpringMVC框架中@JsonView的使用

      本文链接:https://www.haomeiwen.com/subject/djarrctx.html