zoukankan      html  css  js  c++  java
  • 6. SpringBoot中Json串处理

    SpringBoot中的Json字符串处理

    1.0 统一响应结果集

    SpringBoot 项目主要作用于前后端分离项目,为了方便前后端进行数据交互,我们需要统一后端的返回数据格式,封装出一个统一框架响应状态码和统一响应类

    /**
     * Constants enumerating the HTTP status codes.
     * All status codes defined in RFC1945 (HTTP/1.0), RFC2616 (HTTP/1.1), and
     * RFC2518 (WebDAV) are listed.
     *
     * @since 4.0
     */
    public interface HttpStatus {
    
        // --- 1xx Informational ---
    
        /**
         * {@code 100 Continue} (HTTP/1.1 - RFC 2616)
         */
        int SC_CONTINUE = 100;
        /**
         * {@code 101 Switching Protocols} (HTTP/1.1 - RFC 2616)
         */
        int SC_SWITCHING_PROTOCOLS = 101;
        /**
         * {@code 102 Processing} (WebDAV - RFC 2518)
         */
        int SC_PROCESSING = 102;
    
        // --- 2xx Success ---
    
        /**
         * {@code 200 OK} (HTTP/1.0 - RFC 1945)
         */
        int SC_OK = 200;
        /**
         * {@code 201 Created} (HTTP/1.0 - RFC 1945)
         */
        int SC_CREATED = 201;
        /**
         * {@code 202 Accepted} (HTTP/1.0 - RFC 1945)
         */
        int SC_ACCEPTED = 202;
        /**
         * {@code 203 Non Authoritative Information} (HTTP/1.1 - RFC 2616)
         */
        int SC_NON_AUTHORITATIVE_INFORMATION = 203;
        /**
         * {@code 204 No Content} (HTTP/1.0 - RFC 1945)
         */
        int SC_NO_CONTENT = 204;
        /**
         * {@code 205 Reset Content} (HTTP/1.1 - RFC 2616)
         */
        int SC_RESET_CONTENT = 205;
        /**
         * {@code 206 Partial Content} (HTTP/1.1 - RFC 2616)
         */
        int SC_PARTIAL_CONTENT = 206;
        /**
         * {@code 207 Multi-Status} (WebDAV - RFC 2518)
         * or
         * {@code 207 Partial Update OK} (HTTP/1.1 - draft-ietf-http-v11-spec-rev-01?)
         */
        int SC_MULTI_STATUS = 207;
    
        // --- 3xx Redirection ---
    
        /**
         * {@code 300 Mutliple Choices} (HTTP/1.1 - RFC 2616)
         */
        int SC_MULTIPLE_CHOICES = 300;
        /**
         * {@code 301 Moved Permanently} (HTTP/1.0 - RFC 1945)
         */
        int SC_MOVED_PERMANENTLY = 301;
        /**
         * {@code 302 Moved Temporarily} (Sometimes {@code Found}) (HTTP/1.0 - RFC 1945)
         */
        int SC_MOVED_TEMPORARILY = 302;
        /**
         * {@code 303 See Other} (HTTP/1.1 - RFC 2616)
         */
        int SC_SEE_OTHER = 303;
        /**
         * {@code 304 Not Modified} (HTTP/1.0 - RFC 1945)
         */
        int SC_NOT_MODIFIED = 304;
        /**
         * {@code 305 Use Proxy} (HTTP/1.1 - RFC 2616)
         */
        int SC_USE_PROXY = 305;
        /**
         * {@code 307 Temporary Redirect} (HTTP/1.1 - RFC 2616)
         */
        int SC_TEMPORARY_REDIRECT = 307;
    
        // --- 4xx Client Error ---
    
        /**
         * {@code 400 Bad Request} (HTTP/1.1 - RFC 2616)
         */
        int SC_BAD_REQUEST = 400;
        /**
         * {@code 401 Unauthorized} (HTTP/1.0 - RFC 1945)
         */
        int SC_UNAUTHORIZED = 401;
        /**
         * {@code 402 Payment Required} (HTTP/1.1 - RFC 2616)
         */
        int SC_PAYMENT_REQUIRED = 402;
        /**
         * {@code 403 Forbidden} (HTTP/1.0 - RFC 1945)
         */
        int SC_FORBIDDEN = 403;
        /**
         * {@code 404 Not Found} (HTTP/1.0 - RFC 1945)
         */
        int SC_NOT_FOUND = 404;
        /**
         * {@code 405 Method Not Allowed} (HTTP/1.1 - RFC 2616)
         */
        int SC_METHOD_NOT_ALLOWED = 405;
        /**
         * {@code 406 Not Acceptable} (HTTP/1.1 - RFC 2616)
         */
        int SC_NOT_ACCEPTABLE = 406;
        /**
         * {@code 407 Proxy Authentication Required} (HTTP/1.1 - RFC 2616)
         */
        int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
        /**
         * {@code 408 Request Timeout} (HTTP/1.1 - RFC 2616)
         */
        int SC_REQUEST_TIMEOUT = 408;
        /**
         * {@code 409 Conflict} (HTTP/1.1 - RFC 2616)
         */
        int SC_CONFLICT = 409;
        /**
         * {@code 410 Gone} (HTTP/1.1 - RFC 2616)
         */
        int SC_GONE = 410;
        /**
         * {@code 411 Length Required} (HTTP/1.1 - RFC 2616)
         */
        int SC_LENGTH_REQUIRED = 411;
        /**
         * {@code 412 Precondition Failed} (HTTP/1.1 - RFC 2616)
         */
        int SC_PRECONDITION_FAILED = 412;
        /**
         * {@code 413 Request Entity Too Large} (HTTP/1.1 - RFC 2616)
         */
        int SC_REQUEST_TOO_LONG = 413;
        /**
         * {@code 414 Request-URI Too Long} (HTTP/1.1 - RFC 2616)
         */
        int SC_REQUEST_URI_TOO_LONG = 414;
        /**
         * {@code 415 Unsupported Media Type} (HTTP/1.1 - RFC 2616)
         */
        int SC_UNSUPPORTED_MEDIA_TYPE = 415;
        /**
         * {@code 416 Requested Range Not Satisfiable} (HTTP/1.1 - RFC 2616)
         */
        int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
        /**
         * {@code 417 Expectation Failed} (HTTP/1.1 - RFC 2616)
         */
        int SC_EXPECTATION_FAILED = 417;
    
        /**
         * Static constant for a 418 error.
         * {@code 418 Unprocessable Entity} (WebDAV drafts?)
         * or {@code 418 Reauthentication Required} (HTTP/1.1 drafts?)
         */
        // not used
        //  int SC_UNPROCESSABLE_ENTITY = 418;
    
        /**
         * Static constant for a 419 error.
         * {@code 419 Insufficient Space on Resource}
         * (WebDAV - draft-ietf-webdav-protocol-05?)
         * or {@code 419 Proxy Reauthentication Required}
         * (HTTP/1.1 drafts?)
         */
        int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 419;
        /**
         * Static constant for a 420 error.
         * {@code 420 Method Failure}
         * (WebDAV - draft-ietf-webdav-protocol-05?)
         */
        int SC_METHOD_FAILURE = 420;
        /**
         * {@code 422 Unprocessable Entity} (WebDAV - RFC 2518)
         */
        int SC_UNPROCESSABLE_ENTITY = 422;
        /**
         * {@code 423 Locked} (WebDAV - RFC 2518)
         */
        int SC_LOCKED = 423;
        /**
         * {@code 424 Failed Dependency} (WebDAV - RFC 2518)
         */
        int SC_FAILED_DEPENDENCY = 424;
    
        // --- 5xx Server Error ---
    
        /**
         * {@code 500 Server Error} (HTTP/1.0 - RFC 1945)
         */
        int SC_INTERNAL_SERVER_ERROR = 500;
        /**
         * {@code 501 Not Implemented} (HTTP/1.0 - RFC 1945)
         */
        int SC_NOT_IMPLEMENTED = 501;
        /**
         * {@code 502 Bad Gateway} (HTTP/1.0 - RFC 1945)
         */
        int SC_BAD_GATEWAY = 502;
        /**
         * {@code 503 Service Unavailable} (HTTP/1.0 - RFC 1945)
         */
        int SC_SERVICE_UNAVAILABLE = 503;
        /**
         * {@code 504 Gateway Timeout} (HTTP/1.1 - RFC 2616)
         */
        int SC_GATEWAY_TIMEOUT = 504;
        /**
         * {@code 505 HTTP Version Not Supported} (HTTP/1.1 - RFC 2616)
         */
        int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
    
        /**
         * {@code 507 Insufficient Storage} (WebDAV - RFC 2518)
         */
        int SC_INSUFFICIENT_STORAGE = 507;
    
        /**
         * --------------------------------------------------
         * 系统自己定义响应码
         */
        // int SC_VALID_EXCEPTION = 1000;
    
    }
    
    import lombok.Data;
    import java.util.List;
    
    /**
     * 统一响应类
     */
    @Data
    public class HttpResult {
        private int code = 200;
        private String msg;
        private Object data;
    
        public static HttpResult error() {
            return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
        }
    
        public static HttpResult error(String msg) {
            return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
        }
    
        public static HttpResult error(int code, String msg) {
            HttpResult r = new HttpResult();
            r.setCode(code);
            r.setMsg(msg);
            return r;
        }
        public static HttpResult error(List<String> errorList){
            HttpResult r = new HttpResult();
            r.setData(errorList);
            r.setCode(1000);
            return r;
        }
    
        public static HttpResult ok(String msg) {
            HttpResult r = new HttpResult();
            r.setMsg(msg);
            return r;
        }
    
        public static HttpResult ok(Object data) {
            HttpResult r = new HttpResult();
            r.setData(data);
            return r;
        }
    
        public static HttpResult ok() {
            return new HttpResult();
        }
    
    }
    

    2.0 处理日期时间格式

    @JsonFormat主要是后台到前台的时间格式的转换,序列化

    @DateTimeFormat主要是前后到后台的时间格式的转换,反序列化

    2.1 注解式

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    

    2.2 全局配置式(实体类必须实现可序列化)

    spring:
      mvc:
        date-format: yyyy-MM-dd HH:mm:ss
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
    
  • 相关阅读:
    JavaScript cookie详解
    Javascript数组的排序:sort()方法和reverse()方法
    javascript中write( ) 和 writeln( )的区别
    div做表格
    JS 盒模型 scrollLeft, scrollWidth, clientWidth, offsetWidth 详解
    Job for phpfpm.service failed because the control process exited with error code. See "systemctl status phpfpm.service" and "journalctl xe" for details.
    orm查询存在价格为空问题
    利用救援模式破解系统密码
    SSH服务拒绝了密码
    C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
  • 原文地址:https://www.cnblogs.com/forelim/p/15392172.html
Copyright © 2011-2022 走看看