irpas技术客

Spring Boot处理JSON数据_nuist__NJUPT_springboot处理json

大大的周 3958

Spring Boot处理JSON数据

在Spring Boot的Web应用中,内置JSON数据解析功能,默认使用Jackson自动解析,不需要加载Jackson依赖包,当控制器返回一个Java对象或者集合数据时,SpringBoot自动将其转换为Json格式数据,使用起来方便简洁。

SpringBoot处理JSON数据时,需要用到两个重要的JSON转换注解,分别是@RequestBody和@ResponseBody。 @RequestBody:将请求主体的数据绑定到形参上,该注解应用在方法的形参上 @ResponseBody:直接返回Json对象,该注解应用在方法上。

下面用一个实例学习SpringBoot处理Json数据的过程,该实例针对返回List集合做处理。

1-创建Maven项目,并在pom.xml文件中添加相关依赖。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>Thymeleaf</artifactId> <version>1.0-SNAPSHOT</version> <parent> <!--配置SpringBoot的核心启动器--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <dependencies> <dependency> <!--添加starter模块--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> </project>

2-在src/main/java目录下创建包com.model,并在该包中创建实体模型类Person,该模型类包含三个属性,分别为用户名,密码和年龄。

/** * 实体模型类,包含用户名,密码,年龄三个属性 */ public class Person { private String pname ; private String password ; private Integer page ; public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } }

3-创建视图显示页面,在src/main/resources/templates创建视图页面input.html,在该页面引用jQuery框架,并使用它的ajax方法进行异步请求,同时引入BootStrap框架。

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Json数据处理</title> </head> <link rel = "stylesheet" th:href = "@{css/bootstrap.min.css}"/> <link rel = "stylesheet" th:href = "@{css/bootstrap-theme.min.css}"/> <!--引入jQuery--> <script type = "text/javascript" th:src="@{js/jquery-3.3.1.min.js}"></script> <script type = "text/javascript"> function testJson(){ //获取输入的pname为id var pname = $("#pname").val() ; var password = $("#password").val() ; var page = $("#page").val() ; $.ajax({ //发送请求的url字符串 url:"testJson", //定义回调相应的数据格式为Json字符串,该属性可以省略 dataType:"json", //请求类型 type:"post", //定义发送请求的数据格式为Json字符串 contentType:"application/json", //data表示发送的数据 data:JSON.stringify({pname:pname, password:password, page:page}), //成功响应的结果 success:function (data) { if(data != null){ //返回一个List<Map<String, Object>>对象 for(var i=0; i<data.length; i++){ alert(data[i].pname + data[i].password + data[i].page) ; } } }, //请求出错 error:function(){ alert("数据发送失败") ; } }) ; } </script> <body> <div class = "panel panel-primary"> <div class = "panel-heading"> <h3 class = "panel-title">处理JSON数据</h3> </div> </div> <div class = "container"> <div> <h4>添加用户</h4> </div> <div class = "row"> <div class = "col-md-6 col-sm-6"> <form class="form-horizontal" action=""> <div class="form-group"> <div class="input-group col-md-6"> <span class = "input-group-addon"> <i class = "glyphicon glyphicon-pencil"></i> </span> <input class = "form-control" type = "text" id = "pname" th:placeholder="请输入用户名"/> </div> </div> <div class = "form-group"> <div class = "input-group col-md-6"> <span class = "input-group-addon"> <i class = "glyphicon glyphicon-pencil"></i> </span> <input class="form-control" type="text" id = "password" th:placeholder = "请输入密码"/> </div> </div> <div class = "form-group"> <div class = "input-group col-md-6"> <span class = "input-group-addon"> <i class = "glyphicon glyphicon-pencil"></i> </span> <input class="form-control" type="text" id = "page" th:placeholder = "请输入年龄"/> </div> </div> <div class = "form-group"> <div class = "col-md-6"> <div class = "btn-group btn-group-justified"> <div class = "btn-group"> <button type="button" onclick="testJson()" class = "btn btn-success"> <span class = "glyphicon glyphicon-share"></span> &nbsp;测试 </button> </div> </div> </div> </div> </form> </div> </div> </div> </body> </html>

4-创建控制器,在src/main/java目录下创建com.controller包,在该包中创建控制器类TestJsonController,在该类中有两个处理方法,一个是界面导航方法input,另一个是接收页面请求并给予响应的方法。

import com.model.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller public class TestJsonController { //进入视图页面 @RequestMapping("/input") public String input(){ return "input" ; } //接收页面请求的Json数据 @RequestMapping("/testJson") @ResponseBody public List<Map<String, Object>> testJson(@RequestBody Person user){ //打印接收的JSON格式数据 System.out.println("pname = " + user.getPname() + " password = " + user.getPassword() + " page = " + user.getPage()); List<Map<String, Object>> list = new ArrayList<>() ; Map<String, Object> map = new HashMap<>() ; map.put("pname", "王国栋") ; map.put("password", "123") ; map.put("page", 25) ; Map<String, Object> map1 = new HashMap<>() ; map1.put("pname", "唐乃乔") ; map1.put("password", "456") ; map1.put("page", 25) ; list.add(map) ; list.add(map1) ; return list ; } }

5-在src/main/java目录下创建com.test包,在该包中创建启动类,运行启动类,然后访问http://localhost:8080/input

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(scanBasePackages = {"com"}) public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args) ; } }

6-运行结果如下: 视图页面发送的Json数据,通过@RequestBody注解绑定新参获得,在控制台打印 @RespnseBody响应的结果,通过alert()方法响应到视图页面。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Spring