1.JSON數據交互
1.1 JSON概述
JSON 是一種輕量級的數據交換格式,是一種理想的數據交互語言,它易于閱讀和編寫,同時也易于機器解析和生成。
JSON有兩種數據結構:
- 對象結構
- 數組結構
1.1.1 對象結構
對象結構是由花括號括起來的逗號分割的鍵值對(key:value)構成。
對象結構的語法格式是:{ "key1 ":"value 1", "key2 ":value 2, "key3 ":value 3}
注意:
key 必須是字符串,value 可以是字符串, 數字, 對象, 數組, 布爾值或 null。
key 和 value 中使用冒號(:)分割。
每個 key/value 對使用逗號(,)分割。
1.1.2 數組結構
數組結構是由中括號包裹逗號分隔的值的列表組成。
數組結構的語法格式是:
[ "value1","value2","value3" ]
注意:JSON 中數組值必須是字符串, 數字, 對象, 數組, 布爾值或 null。
java轉換為json 的過程一般會稱為 “序列化”
json轉換為java 的過程一般會稱為 “反序列化”
json的屬和字符串值必須要用雙引號 “” 不能用單引
1.2 JSON數據轉換
為實現瀏覽器與控制器類之間的數據交互,Spring提供了一個HttpMessageConverter接口來實現該工作。Spring為HttpMessageConverter接口提供了很多實現類,來對不同類型的數據進行信息轉換。而Spring MVC 默認處理JSON格式請求響應的實現類是MappingJackson2HttpMessageConverter,使用此類對數據進行轉換。
數據轉換操作步驟:
導入jackson依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2.2</version>
</dependency>
在SpringMVC的核心配置文件中開啟mvc的注解驅動,此時在HandlerAdaptor中會自動裝配一個消息轉換器:MappingJackson2HttpMessageConverter,可以將響應到瀏覽器的Java對象轉換為Json格式的字符串
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
創建一個User類,用于封裝User類型的請求參數
public class User {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在控制器方法上使用@ResponseBody注解進行標識
@RequestMapping("/testJson")
@ResponseBody
public User testJson(){
return new User(001,"jack","123456");
}
將Java對象直接作為控制器方法的返回值返回,就會自動轉換為json格式的字符串
2. HttpMessageConverter
HttpMessageConverter,報文信息轉換器,將請求報文轉換為Java對象,或將Java對象轉換為響應報文。
HttpMessageConverter提供了兩個注解@RequestBody和@ResponseBody,在JSON格式轉換中也是非常重要的。
2.1 @RequestBody
@RequestBody 可以獲取請求體,需要在控制器方法設置一個形參,使用@RequestBody進行標識,就會將請求體中的數據綁定到方法的形參中。
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String requestBody){
System.out.println("requestBody:" + requestBody);
return "success";
}
表單提交:
<form action="${pageContext.request.contextPath}/testRequestBody" method="post">
用戶名:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="測試"><br>
</form>
返回結果:requestBody:username=abc&password=123
2.2 @ResponseBody
@ResponseBody 標識當前的控制器方法,直接將該方法的返回值作為響應報文的響應體響應到瀏覽器
@RequestMapping("/testResponseBody")
@ResponseBody
public String testResponseBody(){
return "success";
}
通過超鏈接測試:
<a href="${pageContext.request.contextPath}/testResponseBody">測試testResponseBody</a>
到此這篇關于Spring MVC基于注解的使用JSON數據處理的文章就介紹到這了,更多相關Spring MVC JSON數據處理內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!