/**
* @description:封装json对象,所有返回结果都使用它
**/
public class Result<T> { private int code;// 业务自定义状态码 private String msg;// 请求状态描述,调试用 private T data;// 请求数据,对象或数组均可 public Result() {
} /**
* 成功时候的调用
* @param data data
* @param <T> t
* @return Result
*/
public static <T> Result<T> success(T data){
return new Result<T>(data);
} /**
* 失败时候的调用
* @param codeMsg codeMsg
* @param <T> t
* @return Result
*/
public static <T> Result<T> error(CodeMsg codeMsg){
return new Result<T>(codeMsg);
} /**
* 成功的构造函数
* @param data data
*/
public Result(T data){
this.code = 200;//默认200是成功
this.msg = "SUCCESS";
this.data = data;
} public Result(int code, String msg) {
this.code = code;
this.msg = msg;
} /**
* 失败的构造函数
* @param codeMsg codeMsg
*/
private Result(CodeMsg codeMsg) {
if(codeMsg != null) {
this.code = codeMsg.getCode();
this.msg = codeMsg.getMsg();
}
} public int getCode() {
return code;
} public void setCode(int code) {
this.code = code;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
} @Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
public class CodeMsg {

    private int code;
private String msg;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
/*服务端异常*/
public static CodeMsg SUCCESS = new CodeMsg(200,"SUCCESS");
public static CodeMsg SERVER_ERROR = new CodeMsg(100,"系统异常:%s");
public static CodeMsg BIND_ERROR = new CodeMsg(101,"(绑定异常)参数校验异常:%s"); /*用占位符 传入一个参数*/
public static CodeMsg SESSION_ERROR = new CodeMsg(102,"没有SESSION!"); /*用占位符 传入一个参数*/
public static CodeMsg REQUEST_ERROR = new CodeMsg(103,"非法请求!"); /*用占位符 传入一个参数*/
public static CodeMsg REQUEST_OVER_LIMIT = new CodeMsg(104,"请求次数过多!"); /*用占位符 传入一个参数*/ private CodeMsg( ) {
}
private CodeMsg( int code,String msg ) {
this.code = code;
this.msg = msg;
}
//不定参的构造函数
public CodeMsg fillArgs(Object... args) {
int code = this.code;
String message = String.format(this.msg, args);
return new CodeMsg(code, message);
}
@Override
public String toString() {
return "CodeMsg [code=" + code + ", msg=" + msg + "]";
}
}

SpringBoot之封装json对象返回json数据的更多相关文章

  1. 本文使用springMVC和ajax,实现将JSON对象返回到页面

    一.引言 本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架. 二.入门例子 ①. 建立工程, ...

  2. 大话Json对象和Json字符串

    一.Json对象和Json字符串的区别 (1)Json对象:可以通过javascript存取属性. 先介绍一下json对象,首先说到对象的概念,对象的属性是可以用:对象.属性进行调用的.例如: var ...

  3. Js数据类型、Json格式、Json对象、Json字符串

    数据类型,从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词. 第二种类型是se ...

  4. fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

    fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化 在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串 ...

  5. 前端页面使用 Json对象与Json字符串之间的互相转换

    前言 在前端页面很多时候都会用到Json这种格式的数据,最近没有前端,后端的我也要什么都要搞,对于Json对象与Json字符串之间的转换终于摸清楚了几种方式,归纳如下! 一:Json对象转换为json ...

  6. json对象和json字符串转换方法

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...

  7. JSON对象、JSON字符串的相互转换

    JSON对象.JSON字符串的相互转换 json的格式: 第一种方式: 单一的json字符串,转换成json对象时,需要 eval('(' + json + ')');这样的格式,中间需要加括号 va ...

  8. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

    一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...

  9. JavaScript对象、JSON对象、JSON字符串的区别

    一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...

随机推荐

  1. Yum三方仓库——RPMForge

    参考:How to Enable RPMForge Repository in RHEL/CentOS 7.x/6.x/5.x RPMForge / RepoForge这两个项目已经死亡,不应该使用 ...

  2. 用js刷剑指offer(二叉搜索树的后序遍历序列)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 牛客网链接 js代码 function Verif ...

  3. 永远不会执行的cron表达式

    场景是这样的,在服务里利用sprint boot的@Scheduled(cron = "${xx.run.schedule}")定义了一个定时服务,xx.run.schedule变 ...

  4. linux网络编程之进程间通信介绍

    从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好 ...

  5. 【搜索/tarjan找环】zznu-简单环路

    简单环路 题目描述 有一个N x M 大小的地图,地图中的每个单元包含一个大写字母. 若两个相邻的(这里的相邻指“上下左右”相邻)点上的字母相同,我们可以用线段连接这两个点. 若存在一个包含同一字母的 ...

  6. m_strcpy

    自己实现strcpy函数 #include <stdio.h> #include <assert.h> //如果它的条件返回错误,则终止程序执行 char *m_strcpy( ...

  7. 【csp模拟赛九】--dfs2

    dfs 代码: #include<algorithm> #include<iostream> #include<cstdio> using namespace st ...

  8. 区间连续长度的线段树——洛谷P2894 [USACO08FEB]酒店Hotel

    https://www.luogu.org/problem/P2894 #include<cstdio> #include<iostream> using namespace ...

  9. Codeforces 1175G Yet Another Partiton Problem [DP,李超线段树]

    Codeforces 思路 首先吐槽一句:partiton是个什么东西?我好像在百度翻译里面搜不到呀qwq 发现不了什么性质,那就直接上DP吧.注意到DP可以分层,所以设\(dp_i\)表示当前层,分 ...

  10. FLUENT多相流问题后处理中如何显示其中一相的分布【转载】

    转载自:http://blog.sina.com.cn/s/blog_6a5314cf0100tnsz.html 多相流问题后处理中很容易显示相界面在某些面上的形态,如图1所示.其实利用ISO-Cli ...