java 接口请求返回通用json

public class BaseResponseBody {
 // 不能添加属性 仅做泛型使用
}

  

public class ResponseBase<T extends BaseResponseBody> {

    private Integer msgCode ;
    private String msgString;
    private long serverTime;
    private T body;
    
    public ResponseBase(){
        super();
        this.msgCode = Integer.parseInt(MsgConstants.RESULT_200[0]);
        this.msgString = MsgConstants.RESULT_200[1];
        this.serverTime = System.currentTimeMillis();
    }
    
    public ResponseBase(T body){
        this();
        this.body = body;
    }
    
    public ResponseBase(String msgCode, String msgString){
        super();
        if(NumberUtils.isDigits(msgCode)){
            this.msgCode = Integer.parseInt(msgCode);
        }else{
            this.msgCode = Integer.parseInt(MsgConstants.RESULT_502[0]);
        }
        this.msgString = msgString;
        this.serverTime = System.currentTimeMillis();
    }

    public Integer getMsgCode() {
        return msgCode;
    }

    public String getMsgString() {
        return msgString;
    }

    public long getServerTime() {
        return serverTime;
    }

    public T getBody() {
        return body;
    }

    public void setMsgCode(Integer msgCode) {
        this.msgCode = msgCode;
    }

    public void setMsgString(String msgString) {
        this.msgString = msgString;
    }

    public void setServerTime(long serverTime) {
        this.serverTime = serverTime;
    }

    public void setBody(T body) {
        this.body = body;
    }
}

  

public class MsgConstants {
	
	/******************** 平台调用返回失败返回代码和异常描述 ***********************/
	public final static String[] RESULT_200 = { "200", "SUCCESS" };
}
@RequestMapping(value = "/contlistAES", method = RequestMethod.POST)
	@ResponseBody
	public void contlistAES(HttpServletRequest req, HttpServletResponse rsp) {
		ContactListRequest request = null;
		ResponseBase<SubNodesResp> response = null;
		try {
			// 解析请求参数并解密
			String jsonParams=AppInterFaceUtil.getInputStreamParameter(req);
			request = JSON.parseObject(jsonParams, ContactListRequest.class);
			if (null==request) {
				throw new BaseException(MsgConstants.RESULT_403[0], MsgConstants.RESULT_403[1]);
			}
			response = new ResponseBase<SubNodesResp>();
			//查询数据
			SubNodesResp info = departmentService.getChildFromClient(request.getDeptId(),request.getTs());
			response.setBody(info);
		} catch (BaseException e) {
			response = new ResponseBase<SubNodesResp>(e.getCode(), e.getMessage());
		} catch (Exception e) {
			if (StringUtils.isBlank(e.getMessage())) {
				response = new ResponseBase<SubNodesResp>(MsgConstants.RESULT_502[0], MsgConstants.RESULT_502[1]);
			} else {
				response = new ResponseBase<SubNodesResp>(MsgConstants.RESULT_502[0], e.getMessage());
			}
			e.printStackTrace();
		}
		//返回数据
		String data = JSON.toJSONString(response, SerializerFeature.WriteMapNullValue);
		AjaxUtil.writeClient(data, req, rsp);
	}

  

public class AjaxUtil {
	private static Logger logger = LoggerFactory.getLogger(AjaxUtil.class);
	/**
	 * ajax 请求返回的数据
	 * @param data
	 * @param req
	 * @param resp
	 */
	public static void sendMessage(String data,HttpServletResponse resp){
		PrintWriter printWriter = null;
		try {
			printWriter = resp.getWriter();
			printWriter.print(data);
		} catch (IOException ex) {
			logger.error("Ajax send  "+ data + " , Exception :" + ex);
		} finally {
			if (null != printWriter) {
				printWriter.flush();
				printWriter.close();
			}
		}
	}
	
	/**
	 * 封装easyui表格数据
	 * @param list 列表数据
	 * @param total 页数
	 * @return
	 */
	public static Map<String, Object> getPageListDate(List<?> list,int total){
		if (list != null) {
			Map<String, Object> result = new HashMap<String, Object>();
			result.put("total", total);
			result.put("rows", list);
			return result;// 这个就是你在ajax成功的时候返回的数据,我在那边进行了一个对象封装
		}
		return null;
	}
	
	/**
	 * ajax 请求返回的数据
	 * @param data
	 * @param req
	 * @param resp
	 */
	public static void writeMessage(String data,HttpServletResponse resp){
		resp.setHeader("Cache-Control", "no-cache");
		resp.setContentType("text/json;charset=UTF-8");
		resp.setCharacterEncoding("UTF-8");
		PrintWriter printWriter = null;
		try {
			printWriter = resp.getWriter();
			printWriter.write(data);
		} catch (IOException ex) {
			logger.error("Ajax send  "+ data + " , Exception :" + ex);
		} finally {
			if (null != printWriter) {
				printWriter.flush();
				printWriter.close();
			}
		}
	}
	
	
	/**
	 * ajax 请求返回的数据
	 * @param data
	 * @param req
	 * @param resp
	 */
	public static void writeClient(String data,HttpServletRequest request,HttpServletResponse response){
		
	
		PrintWriter printWriter = null;
		try {
			
			if(request.getRequestURI().endsWith("AES")){
				data = AESUtil.encrypt(data);
			}
			
	
			response.setHeader("Cache-Control", "no-cache");
			response.setContentType("text/json;charset=UTF-8");
			response.setCharacterEncoding("UTF-8");
			printWriter = response.getWriter();
			printWriter.write(data);
			
			
		} catch (IOException ex) {
			logger.error("Ajax send  "+ data + " , Exception :" + ex);
		} finally {
			if (null != printWriter) {
				//printWriter.flush();
				//printWriter.close();
			}
		}
	}
}

  

  

原文地址:https://www.cnblogs.com/zuolun2017/p/6762196.html