自定义响应结构 AjaxResult()
package com.dsj.gdbd.utils.ajax;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.Serializable;
import java.util.List;
/**
* @Description: 自定义响应结构
* @Author: DGBD
* @CreateDate: 2018/12/21 16:27
* @UpdateUser: yc
* @UpdateDate: 2018/12/21 16:27
* @UpdateRemark: 修改内容
* @博客地址: https://www.cnblogs.com/mlq2017/
* @Version: 1.0
*/
public class AjaxResult implements Serializable {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/***
* 响应业务状态
*/
private Integer status;
/***
* 响应消息
*/
private String msg;
/***
* 响应中的数据
*/
private Object data;
public static AjaxResult build(Integer status, String msg, Object data) {
return new AjaxResult(status, msg, data);
}
public static AjaxResult ok(Object data) {
return new AjaxResult(data);
}
public static AjaxResult ok() {
return new AjaxResult(null);
}
public AjaxResult() {
}
public static AjaxResult build(Integer status, String msg) {
return new AjaxResult(status, msg, null);
}
public AjaxResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public AjaxResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
// public Boolean isOK() {
// return this.status == 200;
// }
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
/**
* 将json结果集转化为TaotaoResult对象
*
* @param jsonData json数据
* @param clazz TaotaoResult中的object类型
* @return
*/
public static AjaxResult formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, AjaxResult.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (clazz != null) {
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
/**
* 没有object对象的转化
*
* @param json
* @return
*/
public static AjaxResult format(String json) {
try {
return MAPPER.readValue(json, AjaxResult.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return
*/
public static AjaxResult formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
}