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

  1. package com.yb.entity;
  2.  
  3. import java.util.List;
  4.  
  5. import com.fasterxml.jackson.databind.JsonNode;
  6. import 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. */
  28. public 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封装类实现的话,类似于裸奔加载,如下图:

java web中统一结果返回封装类JsonResult的更多相关文章

  1. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  2. 【中文乱码】深入分析 Java Web 中的中文编码问题

    深入分析 Java Web 中的中文编码问题 1.几种常见的编码格式 1.1 为什么要编码 在计算机中存储信息的最小单元是 1 个字节,即 8 个 bit, 所以能表示的字符范围是 0 ~ 255 个 ...

  3. Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  4. 深入分析Java Web中的编码问题

    编码问题一直困扰着我,每次遇到乱码或者编码问题,网上一查,问题解决了,但是实际的原理并没有搞懂,每次遇到,都是什么头疼. 决定彻彻底底的一次性解决编码问题. 1.为什么要编码 计算机的基本单元是字节, ...

  5. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  6. 第三章 深入分析Java Web中的中文编码问题

    3.1 几种常见的编码格式 3.1.1 为什么要编码 一个字节 byte只能表示0~255个符号,要表示更多的字符,需要编码. 3.1.2 如何翻译 ASCII码:有128个,用一个字节的低7位表示. ...

  7. JDBC在Java Web中的应用

    JDBC在Java Web中的应用 制作人:全心全意 在Java Web开发中,JDBC的应用十分广泛.通常情况下,Web程序操作数据库都是通过JDBC实现,即使目前数据库方面的开源框架层出不穷,但其 ...

  8. Java Web中解决乱码的方式

    Java Web中解决乱码的方式 方式一:添加编码过滤器 package com.itmacy.dev.filter; import javax.servlet.*; import javax.ser ...

  9. JAVA WEB 中的编码分析

    JAVA WEB 中的编码分析 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-co ...

随机推荐

  1. GitHub page创建

      这是我的博客,才刚刚建成请多多指教 https://henryztong.github.io/ 以下地址都是关于创建GitHub 博客的: 地址 说明 https://pages.github.c ...

  2. D介绍-概述

    INTRODUCTION THE SELENIUM PROJECT AND TOOLS Selenium controls web browsers Selenium is many things, ...

  3. Redis和数据库的数据一致性问题

    在数据读多写少的情况下作为缓存来使用,恐怕是Redis使用最普遍的场景了.当使用Redis作为缓存的时候,一般流程是这样的. 如果缓存在Redis中存在,即缓存命中,则直接返回数据 如果Redis中没 ...

  4. Windows微信清理工具v.3.0.1

    Windows微信清理工具v.3.0.1 今天,我原创的Windows微信清理工具迎来最大更新! v.3.0.0更新内容: 1.使用tkinter重构GUI,界面更简单易用! 2.增加"清理 ...

  5. c++ 指针数组与指向数组的指针

    指针数组与指向数组的指针 1.int (*a)[10]-->指向数组的指针 a是一个二级指针,可认为是一个二维数组的首地址,指向一个一维数组,数组存储了10个int数据. int arr1[10 ...

  6. 施耐德NOE77101后门漏洞分析

    固件下载地址: GitHub - ameng929/NOE77101_Firmware 文件目录结构,这里只列出了一些主要的文件信息: ├── bin ├── ftp ├── fw ├── rdt ├ ...

  7. 解决:阿里云服务器被植入挖矿程序后修改密码失败的问题(报错:passwd: Authentication token manipulation error)

    如下图,在修改密码的时候会报错 原因: 通常不能修改密码都是/etc/passwd文件或者/etc/shadow文件被锁住了 解决: 检查/etc/passwd文件和/etc/shadow文件是否被锁 ...

  8. Spring Cloud Alibaba Nacos 的 2 种健康检查机制!

    Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制.有了此机制之后,Nacos 才能感知服务的健康状态,从而为服务调用者 ...

  9. CobaltStrike逆向学习系列(14):CS功能分析-DotNet

    这是[信安成长计划]的第 14 篇文章 0x00 目录 0x01 DotNet功能分析 0x02 DotNet功能执行 0x03 写在最后 在上两篇文章中,讲述了 CS 中的一种功能执行方式 RDI, ...

  10. [题解]Mail.Ru Cup 2018 Round 1 - D. Changing Array

    [题目] D. Changing Array [描述] 给n个整数a[1],...,a[n],满足0<=a[i]<=2^k-1.Vanya可以对这n个数中任一多个数进行操作,即将x变为x' ...