当前位置: 代码网 > it编程>编程语言>Java > SpringBoot如何统一JSON信息返回

SpringBoot如何统一JSON信息返回

2024年08月09日 Java 我要评论
springboot统一json信息返回调用后端服务后的返回结果有多种类型如:string,integer,boolean,list,map等,在一个项目中,为了保持统一性,我们方法返回结果可以全部使

springboot统一json信息返回

调用后端服务后的返回结果有多种类型

如:stringintegerbooleanlistmap等,

在一个项目中,为了保持统一性,我们方法返回结果可以全部使用json数据格式

如下:

{
    "code":200,
    "msg":"成功",
    "data":"json数据"
}

其中code 是本次请求处理结果对应的状态码,msg是状态码对应的解释信息,data是要返回的数据内容,可以是任意一个对象。

封装响应信息对象

public class responseentity<t> implements serializable {

    private static final long serialversionuid = 3595741978061989861l;
    private integer code;//状态码
    private string msg;//状态码对应信息
    private t data;//要返回的数据


    public integer getcode() {
        return code;
    }


    public void setcode(integer 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;
    }
}

状态码,http请求状态码有多种,使用枚举列举

如下示例:

public enum responseenum {

    success(200, "成功"),
    fail(-1, "失败"),
    error_400(400, "错误的请求"),
    error_404(404, "访问资源不存在"),
    error_500(500, "服务器异常");


    private integer code;
    private string msg;


    responseenum(integer code, string msg) {
        this.code = code;
        this.msg = msg;
    }


    public integer getcode() {
        return code;
    }


    public void setcode(integer code) {
        this.code = code;
    }


    public string getmsg() {
        return msg;
    }


    public void setmsg(string msg) {
        this.msg = msg;
    }
}

创建一个公共类,生成响应对象

public class responseutil {

    /**
     * 成功返回
     * @param object 返回数据
     * @return
     */
    public static responseentity success(object object){
        responseentity resp = new responseentity();
        resp.setcode(responseenum.success.getcode());
        resp.setmsg(responseenum.success.getmsg());
        resp.setdata(object);
        return resp;
    }


    /**
     * 成功返回  无数据
     * @return
     */
    public static responseentity success(){
        return success(null);
    }


    /**
     * 失败返回
     * @param responseenum 响应标识
     * @return
     */
    public static responseentity error(responseenum responseenum){
        responseentity resp = new responseentity();
        resp.setcode(responseenum.getcode());
        resp.setmsg(responseenum.getmsg());
        return resp;
    }
}

spring中的控制器可以用 @controller@restcontroller注解来声明,其中@controller标识当前控制器是springmvc的控制器,要返回json对象数据,需要和@responsebody注解联合使用;

@restcontroller主要用来构建restful风格接口,返回客户端的请求数据,相当于同时使用@controller@responsebody注解。

创建pojo包及对应的实体类

public class demoentity {

    private integer id;
    private string name;


    public integer getid() {
        return id;
    }


    public void setid(integer id) {
        this.id = id;
    }


    public string getname() {
        return name;
    }


    public void setname(string name) {
        this.name = name;
    }
}

创建控制器

  • @controller
@controller
public class democontroller {

    @requestmapping(value = "/users", method= requestmethod.get)
    @responsebody
    public responseentity users(){
        list<demoentity> list = new arraylist<demoentity>();
        demoentity demo = new demoentity();
        demo.setid(1);
        demo.setname("蜗牛");
        list.add(demo);
        demoentity demo1 = new demoentity();
        demo1.setid(2);
        demo1.setname("葡萄");
        list.add(demo1);
        return responseutil.success(list);
    }
}

测试:

启动服务后,在浏览器地址栏输入http://localhost:8080/users,可以看到页面上的输出信息

{"code":200,"msg":"成功","data":[{"id":1,"name":"蜗牛"},{"id":2,"name":"葡萄"}]}
  • @restcontroller
@restcontroller
public class demorestcontroller {

    @requestmapping(value = "/users1", method= requestmethod.get)
    public responseentity users(){
        list<demoentity> list = new arraylist<demoentity>();
        demoentity demo = new demoentity();
        demo.setid(1);
        demo.setname("蜗牛");
        list.add(demo);
        demoentity demo1 = new demoentity();
        demo1.setid(2);
        demo1.setname("葡萄");
        list.add(demo1);
        return responseutil.success(list);
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com