java web中统一结果返回封装类JsonResult

废话不多说,直接上代码,源代码是慕课网老师风间影月写的,我拿来直接用了。

1package com.yb.entity; 2 3import java.util.List; 4 5import com.fasterxml.jackson.databind.JsonNode; 6import com.fasterxml.jackson.databind.ObjectMapper; 7 8/** 9 * 10 * @Title: LeeJSONResult.java 11 * @Package com.lee.utils 12 * @Description: 自定义响应数据结构 13 * 这个类是提供给门户,ios,安卓,微信商城用的 14 * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list) 15 * 其他自行处理 16 * 200:表示成功 17 * 500:表示错误,错误信息在msg字段中 18 * 501:bean验证错误,不管多少个错误都以map形式返回 19 * 502:拦截器拦截到用户token出错 20 * 555:异常抛出信息 21 * Copyright: Copyright (c) 2016 22 * Company:Nathan.Lee.Salvatore 23 * 24 * @author leechenxiang 25 * @date 2016年4月22日 下午8:33:36 26 * @version V1.0 27 */ 28public class JsonResult { 29 30 // 定义jackson对象 31 private static final ObjectMapper MAPPER = new ObjectMapper(); 32 33 // 响应业务状态 34 private Integer status; 35 36 // 响应消息 37 private String msg; 38 39 // 响应中的数据 40 private Object data; 41 42 private String ok; // 不使用 43 44 public static JsonResult build(Integer status, String msg, Object data) { 45 return new JsonResult(status, msg, data); 46 } 47 48 public static JsonResult ok(Object data) { 49 return new JsonResult(data); 50 } 51 52 public static JsonResult ok() { 53 return new JsonResult(null); 54 } 55 56 public static JsonResult errorMsg(String msg) { 57 return new JsonResult(500, msg, null); 58 } 59 60 public static JsonResult errorMap(Object data) { 61 return new JsonResult(501, "error", data); 62 } 63 64 public static JsonResult errorTokenMsg(String msg) { 65 return new JsonResult(502, msg, null); 66 } 67 68 public static JsonResult errorException(String msg) { 69 return new JsonResult(555, msg, null); 70 } 71 72 public JsonResult() { 73 74 } 75 76// public static LeeJSONResult build(Integer status, String msg) { 77// return new LeeJSONResult(status, msg, null); 78// } 79 80 public JsonResult(Integer status, String msg, Object data) { 81 this.status = status; 82 this.msg = msg; 83 this.data = data; 84 } 85 86 public JsonResult(Object data) { 87 this.status = 200; 88 this.msg = "OK"; 89 this.data = data; 90 } 91 92 public Boolean isOK() { 93 return this.status == 200; 94 } 95 96 public Integer getStatus() { 97 return status; 98 } 99 100 public void setStatus(Integer status) { 101 this.status = status; 102 } 103 104 public String getMsg() { 105 return msg; 106 } 107 108 public void setMsg(String msg) { 109 this.msg = msg; 110 } 111 112 public Object getData() { 113 return data; 114 } 115 116 public void setData(Object data) { 117 this.data = data; 118 } 119 120 /** 121 * 122 * @Description: 将json结果集转化为LeeJSONResult对象 123 * 需要转换的对象是一个类 124 * @param jsonData 125 * @param clazz 126 * @return 127 * 128 * @author leechenxiang 129 * @date 2016年4月22日 下午8:34:58 130 */ 131 public static JsonResult formatToPojo(String jsonData, Class<?> clazz) { 132 try { 133 if (clazz == null) { 134 return MAPPER.readValue(jsonData, JsonResult.class); 135 } 136 JsonNode jsonNode = MAPPER.readTree(jsonData); 137 JsonNode data = jsonNode.get("data"); 138 Object obj = null; 139 if (clazz != null) { 140 if (data.isObject()) { 141 obj = MAPPER.readValue(data.traverse(), clazz); 142 } else if (data.isTextual()) { 143 obj = MAPPER.readValue(data.asText(), clazz); 144 } 145 } 146 return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj); 147 } catch (Exception e) { 148 return null; 149 } 150 } 151 152 /** 153 * 154 * @Description: 没有object对象的转化 155 * @param json 156 * @return 157 * 158 * @author leechenxiang 159 * @date 2016年4月22日 下午8:35:21 160 */ 161 public static JsonResult format(String json) { 162 try { 163 return MAPPER.readValue(json, JsonResult.class); 164 } catch (Exception e) { 165 e.printStackTrace(); 166 } 167 return null; 168 } 169 170 /** 171 * 172 * @Description: Object是集合转化 173 * 需要转换的对象是一个list 174 * @param jsonData 175 * @param clazz 176 * @return 177 * 178 * @author leechenxiang 179 * @date 2016年4月22日 下午8:35:31 180 */ 181 public static JsonResult formatToList(String jsonData, Class<?> clazz) { 182 try { 183 JsonNode jsonNode = MAPPER.readTree(jsonData); 184 JsonNode data = jsonNode.get("data"); 185 Object obj = null; 186 if (data.isArray() && data.size() > 0) { 187 obj = MAPPER.readValue(data.traverse(), 188 MAPPER.getTypeFactory().constructCollectionType(List.class, clazz)); 189 } 190 return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj); 191 } catch (Exception e) { 192 return null; 193 } 194 } 195 196 public String getOk() { 197 return ok; 198 } 199 200 public void setOk(String ok) { 201 this.ok = ok; 202 } 203 204}

用的时候直接调用JsonResult的OK方法即可,如图:

结果为下图:password不显示是因为我在password实体类中添加了@JsonIgnore注解

如果没用JsonResult封装类实现的话,类似于裸奔加载,如下图:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前