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

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

作者头像
用户1956326
发布于 2019-07-05 05:24:18
发布于 2019-07-05 05:24:18
3.6K00
代码可运行
举报
文章被收录于专栏:猿GG编程猿GG编程
运行总次数:0
代码可运行

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
@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
代码运行次数:0
运行
AI代码解释
复制
@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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
@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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot返回值封装
public static <T> Result<T> success(T data){
用户7741497
2022/08/01
1.4K0
SpringBoot教程(八) | SpringBoot统一结果封装
经过了前面几篇文章,SpringBoot中MVC相关的配置其实都已经差不多了,接下来就可以完全进入接口开发阶段了。前面我们写过几个接口,虽然都加了@RestController注解,相当于统一了我们的返回数据的基本形式为JSON,但是由于我们的项目可能是很多人一起开发,所以我们最好能够把我们的返回结果统一一下,让大家都返回一样的数据格式,这样即规范了代码,也方便了前端人员的调用,不然每个人都按照每个人的风格去写,代码会变得非常混乱。
一缕82年的清风
2022/04/08
7700
mybatis扩展之自定义类型处理器处理枚举类型
全局配置: <typeHandlers> <typeHandler handler="com.gong.mybatis.typeHandler.MyEnumEmpStatusTypeHandler" javaType="com.gong.mybatis.bean.EmpStatus"/> <!-- <typeHandler handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"
西西嘛呦
2020/08/26
7160
mybatis扩展之自定义类型处理器处理枚举类型
SpringBoot 返回 json 数据以及数据封装(万字长文)
在项目开发中,接口与接口之间,前后端之间数据的传输都使用 Json 格式,在 Spring Boot 中,接口返回 Json 格式的数据很简单,在 Controller 中使用@RestController注解即可返回 Json 格式的数据,@RestController也是 Spring Boot 新增的一个注解,我们点进去看一下该注解都包含了哪些东西。
技术从心
2020/07/22
6.5K0
【SpringBoot web-3】web项目统一数据封装与全局异常处理
阿里巴巴的 fastjson是目前应用最广泛的JSON解析框架。本文也将使用fastjson。
云深i不知处
2020/09/16
7830
【Json】json在SpringBoot中的格式转换
fastjson深入理解 fastJson对于json格式字符串的解析主要用到了一下三个类:
瑞新
2020/12/07
6.5K0
【Json】json在SpringBoot中的格式转换
【SpringBoot】Http请求统一异常(返回数据)处理与单元测试
这个ResultUtil中的方法,其实写在BaseController中也挺不错的
谙忆
2021/01/21
8000
【SpringBoot】Http请求统一异常(返回数据)处理与单元测试
SpringBoot系列(九)统一异常处理与统一结果返回
 日常开发过程中,难免有的程序会因为某些原因抛出异常,而这些异常一般都是利用try ,catch的方式处理异常或者throw,throws的方式抛出异常不管。这种方法对于程序员来说处理也比较麻烦,对客户来说也不太友好,所以我们希望既能方便程序员编写代码,不用过多的自己去处理各种异常编写重复的代码又能提升用户的体验,这时候全局异常处理就显得很重要也很便捷了,是一种不错的选择。
全栈学习笔记
2022/03/31
2.4K0
SpringBoot系列(九)统一异常处理与统一结果返回
使用Java对返回的结果,封装成指定JSON格式的数据类型
1、如果任务下来了,并且给定了你指定格式的JSON数据类型,那么就要想法封装成此种JSON格式的数据类型,方便其他成员进行调用,那么是如何进行封装的呢,这里简单研究一下子。
别先生
2020/03/19
4.3K0
Springboot统一返回接口+统一异常处理+后端参数校验
引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </
用户5546570
2020/09/17
3.7K0
Springboot统一返回接口+统一异常处理+后端参数校验
SpringBoot 实现用户登录,分布式Session功能
之前介绍过不少关于登录功能的代码,本文介绍一下关于分布式Session 的功能实现,
Java帮帮
2020/02/11
4.3K0
SpringBoot 实现用户登录,分布式Session功能
统一响应数据的封装
现在不会点前后端分离都不好意思,在分离的环境中,我们前后交互就显得尤为重要。前端按照接口文档中的URL地址和参数要求发送请求,接着后端对业务进行处理就响应约定格式的数据,这种约定的格式常见如下:
晚上没宵夜
2020/05/26
1.4K0
hibernate-validator校验参数(统一异常处理)
Bean Validation源于JSR-303 ,而JSR303是 Java EE 6 中的一项子规范。JSR349、JSR380是其升级版,添加了一些新的特性。Oracle公司传统艺能,一流公司定标准,它们只定义了一些校验注解(Constraint),如@Null@NotNull@Pattern],位于javax.validation.constraints包下,只提供规范不提供实现。
鱼找水需要时间
2023/02/16
1.5K0
hibernate-validator校验参数(统一异常处理)
Springboot封装统一返回结果及全局异常处理
很多时候我们在处理业务逻辑的时候需要抛出一些自定义的异常 创建BusinessException.java文件
超级小的大杯柠檬水
2024/11/21
900
SpringBoot 全局异常处理
在开发中,我们经常会使用try/catch块来捕获异常进行处理,如果有些代码中忘记捕获异常或者不可见的一些异常出现,就会响应给前端一些不友好的提示,这时候我们可以使用全局异常处理。这样就不用在代码中写那些烦人的try/catch块了,代码的可读性也会提高。
jwangkun
2021/12/23
3700
Sentinel + SpringBoot 基于本地文件模式实现规则持久化
首先去Sentinel官网上,将它的源码进行下载,因为在它源码上进行修改,当然如果觉得源码不方便,也可以直接下载它官网上的jar包
黎明大大
2020/09/08
1.7K0
Sentinel + SpringBoot 基于本地文件模式实现规则持久化
《历史代码分析》2、接口结果封装
这段代码定义了一个名为 BaseResponse 的基础类,它是一个通用的响应类,用于封装接口返回的结果。
小码农薛尧
2025/03/03
260
《历史代码分析》2、接口结果封装
Mybatis-Plus的ActiveRecord
        Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。         ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索
别团等shy哥发育
2023/02/25
4630
Mybatis-Plus的ActiveRecord
初识SpringBoot Web开发
虽说前端的h5和js都可以完成表单的字段验证,但是这只能是防止一些小白、误操作而已。如果是一些别有用心的人,是很容易越过这些前端验证的,有句话就是说永远不要相信客户端传递过来的数据。所以前端验证之后,后端也需要再次进行表单字段的验证,以确保数据到后端后是正确的、符合规范的。本节就简单介绍一下,在SpringBoot的时候如何进行表单验证。
端碗吹水
2020/09/23
4570
初识SpringBoot Web开发
7. 统一结果封装
SSM 整合以及功能模块开发完成后,接下来,我们在上述案例的基础上分析下有哪些问题需要我们去解决下。首先第一个问题是:
捞月亮的小北
2023/12/01
1950
7. 统一结果封装
相关推荐
SpringBoot返回值封装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验