前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何基于SpringBoot返回一个json对象

如何基于SpringBoot返回一个json对象

作者头像
用户1956326
发布2019-07-05 13:24:18
3.5K0
发布2019-07-05 13:24:18
举报
文章被收录于专栏:猿GG编程猿GG编程

基于SpringBoot如何返回一个json对象?

开发过程中,接口是必不可少的,那么提前约定数据格式就成了必不可少的步骤。一般情况下大家都是用json格式来传递数据,今天就用spring boot来实现一下返回json对象的步骤。

1、首先创建一个spring boot项目,在spring boot项目下写一个实体类,随便写几个属性意思意思。

代码语言:javascript
复制
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注解。

代码语言:javascript
复制
@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这两个注解的作用。

代码语言:javascript
复制
@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也要封装进去,那就要一个通用类来响应前端请求。例子中自定义了个操作成功的状态码,我们也可以定义其他的状态码。

代码语言:javascript
复制
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格式。

代码语言:javascript
复制
@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":"男"}}

最后要说的简单功能写出来用文字描述出来还是挺困难的,会用是一方面,写是另外一方面。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿GG编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档