Spring Boot(三):JSON数据交互

相信大家做项目的时候,遇到最多的就是后端返回数据到前端了,一般我们返回JSON格式的数据,在步入正题之前,我们先讲一下什么是JSON?使用JSON有什么好处?

JSON的定义

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

解释来自于百度百科,说简单点。JSON就是一串字符串 只不过元素会使用特定的符号标注。

JSON的几种常见格式

  1. 对象
{
    "username": "清风一阵吹我心",
    "password": "123456"
}
  1. 数组
[
    "one",
    "two",
    "three"
]
  1. 对象数组
{
    "student": [
        "张三",
        "李四",
        "王五"
    ],
    "teacher": [
        "语文",
        "数学",
        "英语"
    ]
}
  1. 数组对象
[
    {
        "username": "张三",
        "age": 18
    },
    {
        "username": "李四",
        "age": 20
    }
]
  1. 复杂的格式
{
    "msg": "查询成功",
    "code": 200,
    "data": {
        "provinces": [
            {
                "name": "重庆",
                "cities": [
                    {
                        "name": "重庆市",
                        "district": [
                            "江北区",
                            "渝北区",
                            "万州区",
                            "合川区"
                        ]
                    }
                ]
            },
            {
                "name": "北京",
                "cities": [
                    {
                        "name": "北京市",
                        "district": [
                            "海淀区",
                            "昌平区",
                            "朝阳区",
                            "丰台区"
                        ]
                    }
                ]
            }
        ]
    }
}

使用JSON的好处

  1. 与XML相比,数据格式比较简单, 易于读写
  2. 格式都是压缩的, 占用带宽小
  3. 便于服务器端的解析,支持多种语言。包括C,C#,Java,JavaScript, Perl,php,Python,Ruby等。

JSON的知识,就讲到这里,下面我们讲一下在springboot中怎么返回JSON数据吧。

springboot对JSON的支持

相信大家在使用spring的时候,要想后端返回JSON 数据,还要加入相关jar包,例如:Jackson和FastJson,然后在spring的配置文件中配置解析器和转换器。有些伙伴就在想,我就想返回一个JSON格式的数据,为什么这么麻烦呢?那我告诉你,springboot完美的帮你解决了问题。
还是接着上节的知识讲今天的内容,所以,项目就不重新搭了。如果有刚接触的伙伴,可以看一下上面两节的内容。

https://blog.csdn.net/qq_32101993/article/details/84582927 springboot入门程序搭建

将对象转换成JSON

首先我们创建一个User对象

//这里使用的是lombok工具,自动生成getter、setter方法
@Data
public class User {

    private String username;

    private String password;

    private int age;
}

这里我使用了lombok工具,如果有不明的,可以去看一下关于这个的相关知识,后续课程会详细说明,这里只是使用了它自动生成getter、setter等的方法。
然后创建一个控制层,编写伪代码。

@RestController
public class JsonController {

    @GetMapping("/user")
    public User selectOne() {
        User user = new User();
        user.setUsername("清风一阵吹我心");
        user.setPassword("123456");
        user.setAge(15);
        return user;
    }
}

然后访问地址:http://localhost:8081/user ,看到下面结果。
在这里插入图片描述

将List集合转换成JSON

同样使用User类,只改变控制层的方法。

	@GetMapping("/users")
    public List<User> selectAll() {
        List<User> list = new ArrayList<>();
        User user;
        for (int i = 0; i < 3; i++) {
            user = new User();
            user.setUsername("A" + i);
            user.setPassword(i + "123");
            user.setAge(i);
            list.add(user);
        }
        return list;
    }

然后访问地址:http://localhost:8081/users ,看到下面结果。
在这里插入图片描述

返回自定义对象的JSON型式

首先,我们创建一个自定义对象。

@Data
public class Result<T> {

    private String msg;
    private Integer code;
    private T data;


}

然后创建一个操作它的工具类

public class ResultBean {

    public static Result success(String msg, Object object) {
        Result result = new Result();
        result.setCode(200);
        result.setMsg(msg);
        result.setData(object);
        return result;
    }

    public static Result success(String msg) {
        return success(msg, null);
    }

    public static Result fail(String msg,Integer code){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}

最后书写控制层的代码

	@GetMapping("/select")
    public Result<User> findOne(){
        User user = new User();
        user.setUsername("清风一阵吹我心");
        user.setPassword("12345");
        user.setAge(20);
        return ResultBean.success("查询成功",user);
    }

然后访问地址:http://localhost:8081/select ,看到下面结果。
在这里插入图片描述

推荐大家使用第三种方法,向前端返回数据。不然有的时候,你的方法返回一个对象,有时返回集合,这样导致代码可读性差,不易维护。如果返回一个统一的格式,代码就很清晰了。
好了,今天的分享就到这里了,希望与你们一起进步。

如果您喜欢这篇文章呢,可以动一下你的小手,访问一下博主的个人博客吧,里面也有一些学习心得和大家分享。
博客地址:https://www.qfcwx.com/

“你为什么要那么努力?” “ 因为我喜欢的东西都很贵,我想去的地方都很远,我爱的人超完美。”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章