• Java 利用枚举封装接口返回 JSON 结构


    利用枚举封装返回码和返回信息

     1 package com.template.project.util;
     2 
     3 public enum StatusCode {
     4 
     5     SUCCESS(20000, "成功"), FAIL(50000, "失败"),
     6 
     7     REQUEST_PARAM_ERROR(50001, "请求参数错误");
     8 
     9     private int code;
    10 
    11     private String message;
    12 
    13     StatusCode(int code, String message) {
    14         this.code = code;
    15         this.message = message;
    16     }
    17 
    18     public int getCode() {
    19         return code;
    20     }
    21 
    22     public void setCode(int code) {
    23         this.code = code;
    24     }
    25 
    26     public String getMessage() {
    27         return message;
    28     }
    29 
    30     public void setMessage(String message) {
    31         this.message = message;
    32     }
    33 
    34 }

    封装返回类型,可按需要增加相应的构造方法

      1 package com.template.project.util;
      2 
      3 import java.time.LocalDateTime;
      4 import java.time.format.DateTimeFormatter;
      5 
      6 import com.alibaba.fastjson.JSONObject;
      7 
      8 public class ResultBuilder<T> {
      9 
     10     public ResultBuilder(T data, int code, String message) {
     11         this.result = data;
     12         this.code = code;
     13         this.message = message;
     14         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     15     }
     16 
     17     public ResultBuilder(T data, StatusCode statusCode) {
     18         this.result = data;
     19         this.code = statusCode.getCode();
     20         this.message = statusCode.getMessage();
     21         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     22     }
     23 
     24     public ResultBuilder(T data, StatusCode statusCode, String extendMsg) {
     25         this.result = data;
     26         this.code = statusCode.getCode();
     27         this.message = statusCode.getMessage() + extendMsg;
     28         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     29     }
     30 
     31     public ResultBuilder(StatusCode statusCode) {
     32         this.code = statusCode.getCode();
     33         this.message = statusCode.getMessage();
     34         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     35     }
     36 
     37     public ResultBuilder(StatusCode statusCode, String extendMsg) {
     38         this.code = statusCode.getCode();
     39         this.message = statusCode.getMessage() + extendMsg;
     40         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     41     }
     42 
     43     public ResultBuilder(int code, String message) {
     44         this.code = code;
     45         this.message = message;
     46         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     47     }
     48 
     49     public ResultBuilder(int code) {
     50         this.code = code;
     51         this.responseTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     52     }
     53 
     54     private int code;
     55 
     56     private String message;
     57 
     58     private T result;
     59 
     60     private String responseTime;
     61 
     62     public int getCode() {
     63         return code;
     64     }
     65 
     66     public void setCode(int code) {
     67         this.code = code;
     68     }
     69 
     70     public String getMessage() {
     71         return message;
     72     }
     73 
     74     public void setMessage(String message) {
     75         this.message = message;
     76     }
     77 
     78     public T getResult() {
     79         return this.result;
     80     }
     81 
     82     public void setResult(T result) {
     83         this.result = result;
     84     }
     85 
     86     public String getResponseTime() {
     87         return responseTime;
     88     }
     89 
     90     public void setResponseTime(String responseTime) {
     91         this.responseTime = responseTime;
     92     }
     93 
     94     public JSONObject toJSONObject() {
     95         JSONObject out = new JSONObject();
     96         out.put("code", code);
     97         out.put("message", message);
     98         out.put("result", result);
     99         out.put("responseTime", responseTime);
    100         return out;
    101     }
    102 
    103     @Override
    104     public String toString() {
    105         return toJSONObject().toString();
    106     }
    107     
    108 }

    接下来看看测试结果

     1 public class Test {
     2     
     3     public static void main(String[] args) {
     4         JSONObject jobj = new JSONObject();
     5         jobj.put("name", "wangbo");
     6         jobj.put("age", 29);
     7         ResultBuilder<JSONObject> resultBuilder = new ResultBuilder<>(jobj, StatusCode.SUCCESS);
     8         System.out.println(resultBuilder);
     9     }
    10 
    11 }

    执行结果为

    {"result":{"name":"wangbo","age":29},"code":20000,"responseTime":"2018-09-04 11:00:09","message":"成功"}

    统一响应格式有助于系统间调用和前端解析。

  • 相关阅读:
    【试水CAS-4.0.3】第07节_CASclient配置单点登录
    30分钟,让你彻底明白Promise原理
    【你离硅谷只差一步】网易中国创业家大赛项目火热征集中
    21分钟学会写编译器
    Android 模拟器下载、编译及调试
    GitLab 自动触发 Jenkins 构建
    微服务监控探索
    感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
    延迟任务调度系统—技术选型与设计(下篇)
    使用QUIC
  • 原文地址:https://www.cnblogs.com/wbxk/p/9583276.html
Copyright © 2020-2023  润新知