美文网首页
统一Json格式数据返回的简单实现

统一Json格式数据返回的简单实现

作者: 文景大大 | 来源:发表于2019-11-20 17:24 被阅读0次

    在前后端分离的项目中,我们经常需要使用Json格式的数据进行信息交换。

    如果项目中没有统一的Json返回格式,那么每个开发人员可能就会返回不一样的数据格式,如此会给前端开发以及日后项目的维护带来很多不便。

    所以,项目中维护一个统一的Json格式返回工具类非常有必要。通常情况下,只需要如下三个类即可:

    • ReturnJson
      这是一个供开发者调用的工具类,由它直接提供统一的Json格式数据;
    • ReturnEnum
      这是一个返回信息枚举类,开发者不能随意定义返回信息,应该在该枚举类中定义返回信息的类别;
    • PageInfo
      当返回的数据需要用到分页时,应该给前端提供额外的分页信息。

    下面分别是这三个类的具体实现:

    public class ReturnJson<T> {
        private Integer code;
        private String message;
        private T data;
    
        private ReturnJson(Integer code, String message) {
            this.code = code;
            this.message = message;
            this.data = null;
        }
        private ReturnJson(Integer code, String message, T data) {
            this.code = code;
            this.message = message;
            this.data = data;
        }
        /**
         * 支持自定义的code和message
         */
        public static ReturnJson json(Integer code, String message) {
            return new ReturnJson(code, message);
        }
        public static <T> ReturnJson json(Integer code, String message, T data) {
            return new ReturnJson<>(code, message, data);
        }
        /**
         * 通用成功
         */
        public static ReturnJson success() {
            return ReturnJson.json(ReturnEnum.SUCCESS.getCode(), ReturnEnum.SUCCESS.getMessage());
        }
        public static <T> ReturnJson success(T data) {
            return ReturnJson.json(ReturnEnum.SUCCESS.getCode()
                    , ReturnEnum.SUCCESS.getMessage(), data);
        }
        /**
         * 带分页信息的通用成功
         */
        public static <T> ReturnJson pageSuccess(Long totalRecords, Integer currentPage, Integer pageSize, T data) {
            return ReturnJson.success(new PageInfo<>(totalRecords, currentPage, pageSize, data));
        }
        /**
         * 通用失败
         */
        public static ReturnJson fail() {
            return ReturnJson.json(ReturnEnum.FAIL.getCode(), ReturnEnum.FAIL.getMessage());
        }
    }
    
    public enum ReturnEnum {
        /**
         * 通用成功
         **/
        SUCCESS(200, "success"),
        /**
         * 通用失败
         **/
        FAIL(400, "fail"),
        /**
         * 权限访问错误
         **/
        AUTH_ERROR(401, "auth error"),
        /**
         * 账密登录失败
         **/
        LOGIN_ERROR(402, "login deny");
    
        private Integer code;
        private String message;
    
        ReturnEnum(Integer code, String message){
            this.code = code;
            this.message = message;
        }
        public Integer getCode(){
            return this.code;
        }
        public String getMessage(){
            return this.message;
        }
    }
    
    public class PageInfo<T> {
    
        private Long totalRecords;
        private Integer currentPage;
        private Long totalPage;
        private Integer pageSize;
        private T data;
    
        public PageInfo(Long totalRecords, Integer currentPage, Integer pageSize, T data){
            this.totalRecords = totalRecords;
            this.currentPage = currentPage;
            this.pageSize = pageSize;
            this.totalPage = (totalRecords - 1) / pageSize + 1;
            this.data = data;
        }
    
    }
    

    本案例只是一个最简单的实现,后续可以视使用需求增加更多的Json返回方法。

    相关文章

      网友评论

          本文标题:统一Json格式数据返回的简单实现

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