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]);
});

猜你喜欢

转载自www.cnblogs.com/ABKing/p/12501040.html