基于SpringBoot如何返回一个json对象?
开发过程中,接口是必不可少的,那么提前约定数据格式就成了必不可少的步骤。一般情况下大家都是用json格式来传递数据,今天就用spring boot来实现一下返回json对象的步骤。
1、首先创建一个spring boot项目,在spring boot项目下写一个实体类,随便写几个属性意思意思。
public class Employee { private String name; private String passowod; private String age; private String gender;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getPassowod() { return passowod; }
public void setPassowod(String passowod) { this.passowod = passowod; }
public String getAge() { return age; }
public void setAge(String age) { this.age = age; }
public String getGender() { return gender; }
public void setGender(String gender) { this.gender = gender; }}
2、把controller写起来,如果习惯了写springmvc,那么写出来的代码就是这样的了,主要依赖的@Controller、@ResponseBody注解。
@Controller@RequestMapping("/employee")public class EmployeeController {
@RequestMapping("/getEmployee") @ResponseBody public Employee getEmployee() { Employee employee = new Employee(); employee.setAge("30"); employee.setGender("男"); employee.setName("杰克"); employee.setPassowod("123456"); return employee; }
}
3、在springboot下写法就简单了一些,用的是@RestController,这个注解就可以替代@Controller+@ResponseBody这两个注解的作用。
@RestControllerpublic class EmployeeController {
@RequestMapping("/getEmployee") public Employee getEmployee() { Employee employee = new Employee(); employee.setAge("30"); employee.setGender("男"); employee.setName("杰克"); employee.setPassowod("123456"); return employee; } }
4、执行后得到的页面上就展示出了employee对象。
{"name":"杰克","passowod":"123456","age":"30","gender":"男"}
5、而我们要返回json格式,就要先了解http请求的返回的状态码都有哪些,了解了这些状态码才可以更好的把后端状态返回给前端。
HTTP返回的状态码也分以下几大类状态。
1xx 信息提示
2xx 成功
3xx 重定向
4xx 客户端错误
5xx 服务器错误
我们常见的主要几个状态
200 成功
401 登录失败
404 未找到
500 内部服务器错误
我们给前端返回的json对象,这个时候返回的状态码也是参照http状态码。返回json对象的时候要把状态码封装进去,同时把employee也要封装进去,那就要一个通用类来响应前端请求。例子中自定义了个操作成功的状态码,我们也可以定义其他的状态码。
public class ResultJson<T> {
private int code;
private String msg;
private T data;
/** * 操作成功 */ public static final ResultJson SUCCESS_RESULT = new ResultJson(0, "操作成功!!!");
/** * 系统异常 */ public static final ResultJson SYSTEM_ERROR_RESULT = new ResultJson(1, "系统异常, 请稍后重试!!!");
/** * 登录异常 */ public static final ResultJson LOGIN_ERROR_RESULT = new ResultJson(2, "登录信息已失效, 请重新登录!!!");
/** * 请求参数异常 */ public static final ResultJson PARAM_ERROR_RESULT = new ResultJson(3, "请求参数异常, 请重试!!!");
/** * 操作失败 */ public static final ResultJson FAIL_RESULT = new ResultJson(4, "操作失败, 请重试!!!");
/** * 默认错误编码 */ public static final int ERROR = 9;
public ResultJson() { }
public ResultJson(T data) { this.code = ResultJson.SUCCESS_RESULT.getCode(); this.msg = ResultJson.SUCCESS_RESULT.getMsg(); this.data = data; }
public ResultJson(int code, String msg) { this.code = code; this.msg = msg; }
public ResultJson(int code, String msg, T data) { this.code = code; this.msg = msg; this.data = data; }
public ResultJson(ResultJson param, T data) { this.code = param.getCode(); this.msg = param.getMsg(); this.data = data; }
public static <T> ResultJson<T> error(String message) { return (ResultJson<T>) new ResultJson(ERROR, message); }
public static <T> ResultJson<T> data(T data) { return (ResultJson<T>) new ResultJson(SUCCESS_RESULT, data); }
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; }}
6、通过这个响应通用类,传啥都不是问题,提前写好返回常量还是很有用的,比如ResultJson.SUCCESS_RESULT表示成功,ResultJson.SYSTEM_ERROR_RESULT 表示系统异常,等等。
7、接下来写一个返回json的方法,新方法和之前的getEmployee类似,就是把目前的对象给它加上一层壳子,让他完全符合json格式。
@RequestMapping("/getEmployeeJson")public ResultJson getEmployeeJson() { Employee employee = new Employee(); employee.setAge("30"); employee.setGender("男"); employee.setName("杰克"); employee.setPassowod("123456");
return ResultJson.data(employee);}
8、此时返回的结果就不一样啦,返回的信息有标记的状态码,也有文字提醒,还是返回的数据,完美。
{"code":0,"msg":"操作成功!!!","data":{"name":"杰克","passowod":"123456","age":"30","gender":"男"}}
最后要说的简单功能写出来用文字描述出来还是挺困难的,会用是一方面,写是另外一方面。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有