javascript
Spring Boot处理JSON数据
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為idvar 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> 測試</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")@ResponseBodypublic 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()方法響應到視圖頁面。
總結
以上是生活随笔為你收集整理的Spring Boot处理JSON数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PhotoShop纸张大小
- 下一篇: java编程思想读书笔记