javascript
SpringMVC(三)——JSON
文章目錄
- 1. 什么是JSON
- 2. JSON 和 JavaScript 對象的關系
- 3. Controller返回JSON數據
- 3.1 使用Jackson解析
- 3.2 使用FastJson解析
1. 什么是JSON
- JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式,目前使用特別廣泛。
- 采用完全獨立于編程語言的文本格式來存儲和表示數據。
- 簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。
- 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
在 JavaScript 語言中,一切都是對象。因此,任何JavaScript 支持的類型都可以通過 JSON 來表示,例如字符串、數字、對象、數組等。
其要求和語法格式如下:
- 對象表示為鍵值對,數據由逗號分隔
- 花括號保存對象
- 方括號保存數組
注意:鍵/值對組合中的鍵名寫在前面并用雙引號 " " 包裹,使用冒號 : 分隔,然后緊接著值
2. JSON 和 JavaScript 對象的關系
- JSON 是 JavaScript 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質是一個字符串。
JSON 和 JavaScript 對象互轉
- 要實現從JSON字符串轉換為JavaScript 對象,使用 JSON.parse() 方法:
- 要實現從JavaScript 對象轉換為JSON字符串,使用 JSON.stringify() 方法:
代碼實現
1、新建一個項目,添加web支持
2、配置好maven和Tomcat
3、將JavaScript 版本改為 ECMAScript6
4、在web目錄下新建一個 json01.html , 編寫測試內容
5、在IDEA中使用瀏覽器打開,查看控制臺輸出
3. Controller返回JSON數據
整個項目測試目錄:
3.1 使用Jackson解析
- Jackson是目前比較好的json解析工具
- 當然解析工具不止這一個,比如還有阿里巴巴的 fastjson 等等
- 無論使用哪一種解析工具,首先都需要導入其對應的jar包
- 我們從使用Jackson解析開始入手
將字符串解析成為json格式
1、pom.xml中導入各類jar包
<!--Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><!--JSP --><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><!--jstl --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency><!--spring-jdbc--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.9.RELEASE</version></dependency><!--Mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><!--mybatis-spring--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.2</version></dependency><!--數據庫驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- jackson-databind --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.8</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency>2、配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--1.注冊servlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--通過初始化參數指定SpringMVC配置文件的位置,進行關聯--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- 啟動順序,數字越小,啟動越早 --><load-on-startup>1</load-on-startup></servlet><!--所有請求都會被springmvc攔截 --><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--2、亂碼過濾器--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/</url-pattern></filter-mapping></web-app>3、配置springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><mvc:annotation-driven/><mvc:default-servlet-handler/><!-- 自動掃描指定的包,下面所有注解類交給IOC容器管理 --><context:component-scan base-package="com.zz.controller"/><!-- 視圖解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前綴 --><property name="prefix" value="/WEB-INF/jsp/"/><!-- 后綴 --><property name="suffix" value=".jsp" /></bean></beans>4、編寫控制類 JsonController
package com.zz.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController //不會被視圖解析器解析,只會返回一個字符串 public class JsonController {@RequestMapping("/j1")public String json01(){return "string";}@RequestMapping("/j2")public String json02(){return "{\"name\":\"小胖\",\"age\":3,\"sex\":\"男\"}";}}5、測試
配置好Tomcat,并且需要手動創建一個lib目錄,再把所有依賴到lib目錄下
出現中文亂碼現象
6、解決亂碼問題
在springmvc的配置文件上添加一段消息StringHttpMessageConverter轉換配置
再次測試,發現亂碼問題得到解決
將對象解析成為json格式
7、編寫實體類User
package com.zz.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class User {private String name;private int age;private String sex; }8、編寫控制類 JsonController
@RequestMapping(value = "/o1")public String json1() throws JsonProcessingException {//創建一個jackson的對象映射器,用來解析數據ObjectMapper mapper = new ObjectMapper();//創建一個對象User user = new User("鐵牛", 18, "女");//將我們的對象解析成為json格式String str = mapper.writeValueAsString(user);return str;}9、測試
將集合解析成為json格式
10、編寫控制類 JsonController
@RequestMapping(value = "/L2")public String json2() throws JsonProcessingException {//創建一個jackson的對象映射器,用來解析數據ObjectMapper mapper = new ObjectMapper();//創建一個集合User user1 = new User("鐵牛1", 18, "女");User user2 = new User("鐵牛2", 18, "男");User user3 = new User("鐵牛3", 18, "女");User user4 = new User("鐵牛4", 18, "男");User user5 = new User("鐵牛5", 18, "女");User user6 = new User("鐵牛6", 18, "男");List<User> users = Arrays.asList(user1, user2, user3, user4, user5, user6);//將我們的集合解析成為json格式String str = mapper.writeValueAsString(users);return str;}}11、測試
3.2 使用FastJson解析
fastjson.jar是阿里開發的一款專門用于Java開發的包,可以方便的實現json對象與JavaBean對象的轉換,實現JavaBean對象與json字符串的轉換,實現json對象與json字符串的轉換。實現json的轉換方法很多,最后的實現結果都是一樣的
1、導入fastjson 的 pom依賴
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version> </dependency>2、編寫控制類 JsonController
控制臺輸出
@RequestMapping(value = "/f1")public void test() {User user1 = new User("鐵牛1", 18, "女");User user2 = new User("鐵牛2", 18, "男");User user3 = new User("鐵牛3", 18, "女");User user4 = new User("鐵牛4", 18, "男");User user5 = new User("鐵牛5", 18, "女");User user6 = new User("鐵牛6", 18, "男");List<User> users = Arrays.asList(user1, user2, user3, user4, user5, user6);//將java對象轉換為json字符串String jsonString = JSON.toJSONString(users);System.out.println(jsonString);System.out.println("==================================");//將json字符串轉換為java對象List<User> list = JSON.parseObject(jsonString, List.class);System.out.println(list);}3、測試
4、前端輸出
5、測試
這些工具類,我們只需要掌握使用就好了,在使用的時候再根據具體的業務去找對應的實現。
在開發中,我們更偏向于使用Jackson解析,FastJson只適用于一些簡單對象的轉換。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的SpringMVC(三)——JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot(二)——实现一个基
- 下一篇: SpringMVC(四)——Ajax技术