【自制工具类】struts返回json数据包装格式类

自己写的一个给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);

 如果有更好的代码欢迎交流

原文地址:https://www.cnblogs.com/hellxz/p/7782264.html