自己写的一个给struts返回的json数据包装格式类,不喜勿喷,原创,需在项目中引入com.alibaba.fastjson的jar包
先看下效果(这里没有使用msg,有兴趣的往下看):
上demo:
1 import java.util.HashMap; 2 3 4 /** 5 * JSON响应处理工具类 6 * 7 * 返回一个json对象,包含status/msg/data, 8 * checkOK()默认status:200/checkFail()默认status:500 9 * 其中checkOK(Object data)比较特殊,直接返回的是这个对象的json 10 * 其他均为status/msg/data返回格式 11 * 12 * @author Hellxz 13 * @date 2017年10月21日 14 * @version 1.0 15 */ 16 public class JsonResult { 17 18 /**检查成功,返回200**/ 19 public static Object checkOK(){ 20 Object result = build(200, null, null); 21 return result; 22 } 23 /**检测成功,返回200,msg**/ 24 public static Object checkOK(String msg){ 25 Object result = build(200, msg, null); 26 return result; 27 } 28 /**检查成功,直接返回json对象**/ 29 public static Object checkOK(Object data){ 30 Object result = com.alibaba.fastjson.JSONObject.toJSON(data); 31 return result; 32 } 33 34 /**检查成功的响应,返回200,msg,data**/ 35 public static Object checkOK(String msg, Object data){ 36 Object result = build(200, msg, data); 37 return result; 38 } 39 40 /**检查失败,只返回500**/ 41 public static Object checkFail(){ 42 Object result = build(500, null, null); 43 return result; 44 } 45 public static Object checkFail(String msg){ 46 Object result = build(500, msg, null); 47 return result; 48 } 49 50 /**检查失败的响应 500,msg,data**/ 51 public static Object checkFail(String msg,Object data){ 52 Object result = build(500, msg, data); 53 return result; 54 } 55 56 /**返回转换后的json对象(自定义状态码,信息,data)**/ 57 public static Object build(Integer status, String msg, Object data){ 58 HashMap<String,Object> map = new HashMap<>(); 59 map.put("status", status); 60 map.put("msg", msg); 61 map.put("data", data); 62 Object json = com.alibaba.fastjson.JSONObject.toJSON(map); 63 return json; 64 } 65 66 }
因为这是个工具类,所有方法都是静态方法,所以,写出输出流需要自己手动写出来,下边就简单写一个需要放在action类中的小方法,配合以上工具类食用风味更佳~!
/**以response形式将对象写回客户端,推荐传入JSON对象**/ public void writeOut(Object obj){ response.setContentType("text/json;charset=utf-8"); PrintWriter writer = null; try { writer = response.getWriter(); writer.println(obj); } catch (IOException e) { e.printStackTrace(); } finally{ writer.flush(); writer.close(); } }
于是在action中只需要引入最上边提到的工具类,然后用这个方法写回给客户端就好了,so简单~
//写出成功 writeOut(JsonResult.checkOK(); writeOut(JsonResult.checkOK("输出成功"); writeOut(JsonResult.checkOK("输出成功",Object o); writeOut(JsonResult.checkOK(Object o); //这个是唯一不同格式的 //写出失败 writeOut(JsonResult.checkFail(); writeOut(JsonResult.checkFail("输出失败"); writeOut(JsonResult.checkFail("输出失败",Object o); //自定义 writeOut(JsonResult.build(400,"你好",Object o);
如果有更好的代码欢迎交流
时间: 2024-10-19 21:17:03