美文网首页
统一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