TaotaoResult

来源:互联网 发布:qq业务乐园源码 编辑:程序博客网 时间:2024/06/07 05:24
import java.util.List;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;/** * 淘淘商城自定义响应结构 */public class TaotaoResult {    // 定义jackson对象    private static final ObjectMapper MAPPER = new ObjectMapper();    // 响应业务状态    private Integer status;    // 响应消息    private String msg;    // 响应中的数据    private Object data;    public static TaotaoResult build(Integer status, String msg, Object data) {        return new TaotaoResult(status, msg, data);    }    public static TaotaoResult ok(Object data) {        return new TaotaoResult(data);    }    public static TaotaoResult ok() {        return new TaotaoResult(null);    }    public TaotaoResult() {    }    public static TaotaoResult build(Integer status, String msg) {        return new TaotaoResult(status, msg, null);    }    public TaotaoResult(Integer status, String msg, Object data) {        this.status = status;        this.msg = msg;        this.data = data;    }    public TaotaoResult(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 TaotaoResult formatToPojo(String jsonData, Class<?> clazz) {        try {            if (clazz == null) {                return MAPPER.readValue(jsonData, TaotaoResult.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 TaotaoResult format(String json) {        try {            return MAPPER.readValue(json, TaotaoResult.class);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /**     * Object是集合转化     *      * @param jsonData json数据     * @param clazz 集合中的类型     * @return     */    public static TaotaoResult 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;        }    }}
原创粉丝点击