zoukankan      html  css  js  c++  java
  • 自定义响应结构

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

    }

  • 相关阅读:
    for() 和$.each()的用法区别
    HTML5 UTF-8 中文乱码
    chrome,opera..通过file协议浏览html代码时,发送的ajax请求本地文件,会报跨域错误
    局部方法$("html").load()和全局方法$.get()、$.post()
    iOS开发--动画篇之layout动画深入
    iOS 开发--转场动画
    iOS开发--泛型
    Python十分钟学会
    iOS 开发--动画
    一个简单的ObjC和JavaScript交互工具
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254358.html
Copyright © 2011-2022 走看看