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

    }

  • 相关阅读:
    增量学习中的自我训练
    半监督学习和直推学习的区别
    LeetCode: Word Break
    LeetCode: Linked List Cycle
    LeetCode: Reorder List
    LeetCode: Binary Tree Traversal
    LeetCode: LRU Cache
    LeetCode: Insertion Sort List
    LeetCode: Sort List
    LeetCode: Max Points on a Line
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10254358.html
Copyright © 2011-2022 走看看