zoukankan      html  css  js  c++  java
  • 【自制工具类】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);

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

  • 相关阅读:
    转载Dockerfile 中 RUN, CMD, ENTRYPOINT 的区别
    在linux上通过ssh使用github
    dns服务
    centos6 free 和 centos 7的free 的差异与对比
    无重复字符的最长子串
    go get命令在go mod目录下与正常目录执行的区别
    安装git
    转载 筛子算法之golang实现求素数解析
    Go语言基础之并发
    go之无缓冲channel(通道)和有缓冲channel(通道)
  • 原文地址:https://www.cnblogs.com/hellxz/p/7782264.html
Copyright © 2011-2022 走看看