zoukankan      html  css  js  c++  java
  • 07-统一Json的返回格式

    统一Json的返回格式

    在前后端分离的开发模式中,前后端之间使用Json进行通信。

    可是这样会带来一个问题,Json格式可能会无法统一,比如成功时,返回SUCCESS和success等

    所以在项目中,我们可以增加一个返回结果的实体类ResultEntity

    这个类包含三个属性,String result, String message, T data

    可以看到,我们这里使用到了泛型,为什么呢?

    因为返回的数据是不确定的,为了不写成Object进行强转,我们一般使用泛型。

    package top.bigking.crowd.util;
    
    
    /**
     * @Author ABKing
     * @since 2020/3/15 下午9:39
     **/
    public class ResultEntity<T> {
        public static final String SUCCESS = "SUCCESS";
        public static final String FAILED = "FAILED";
        //描述成功与否
        private String result;
        //返回的信息
        private String message;
        //返回的数据
        private T data;
    
        public static <E> ResultEntity<E> successWithoutData(){
            return new ResultEntity<>(SUCCESS, null, null);
        }
        public static <E> ResultEntity<E> successWithData(E data){
            return new ResultEntity<>(SUCCESS, null, data);
        }
        public static <E> ResultEntity<E> failed(String message){
            return new ResultEntity<>(FAILED, message, null);
        }
        public ResultEntity() {
        }
    
        public ResultEntity(String result, String message, T data) {
            this.result = result;
            this.message = message;
            this.data = data;
        }
    
        public String getResult() {
            return result;
        }
    
        public void setResult(String result) {
            this.result = result;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public T getData() {
            return data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    }
    

    这里略微涉及一下泛型的解释:

    泛型可以让类型不在编译阶段确定,而在运行阶段确定,这样的好处是避免强制转换带来问题。如果不使用泛型,我们势必会使用Object,并在之后的代码中进行强制转换,这是不安全的。

    举个例子:

    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    

    我们查看List接口的源码,发现它是这样声明的:

    public interface List<E> extends Collection<E>
    

    接口中的add方法是这样写的:

    boolean add(E e);
    

    显然,使用泛型的好处就是能够在运行时确定类型,而不必写成Object

    最后再写一下FormData如何转换成Json数据格式:

    在实验过程中发现,console.log居然无法打印出FormData的数据

    转成Json后,就可以正常打印。

    const jsonData = {};
    formData.forEach(((value, key) => {jsonData[key] = value}))
    

    Json数据转换成FormData格式:

    const formData = new FormData();
    Object.keys(params).forEach((key) => {
    formData.append(key, params[key]);
    });
    
    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    Keras分类问题
    Keras预测股票
    Tensflow预测股票实例
    estimator = KerasClassifier
    keras CNN解读
    Windows下Python安装: requires numpy+mkl 和ImportError: cannot import name NUMPY_MKL
    Tensorflow RNN_LSTM实例
    同时安装python2.7和python3.5
    oracle 杀掉当前用户的进程
    IMP导入时的错误以及解决办法
  • 原文地址:https://www.cnblogs.com/ABKing/p/12501040.html
Copyright © 2011-2022 走看看