日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC(三)——JSON

發布時間:2025/3/13 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 對象的信息,本質是一個字符串。
var obj = {a: 'Hello', b: 'World'}; //這是一個對象,注意鍵名也是可以使用引號包裹的 var json = '{"a": "Hello", "b": "World"}'; //這是一個 JSON 字符串,本質是一個字符串

JSON 和 JavaScript 對象互轉

  • 要實現從JSON字符串轉換為JavaScript 對象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //結果是 {a: 'Hello', b: 'World'}
  • 要實現從JavaScript 對象轉換為JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //結果是 '{"a": "Hello", "b": "World"}'

代碼實現

1、新建一個項目,添加web支持

2、配置好maven和Tomcat

3、將JavaScript 版本改為 ECMAScript6

4、在web目錄下新建一個 json01.html , 編寫測試內容

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>JSON01</title> </head> <body><script type="text/javascript">//編寫一個js的對象let user = {name:"小胖",age:3,sex:"男"};//將js對象轉換成json字符串let str = JSON.stringify(user);console.log(str);//將json字符串轉換為js對象let user2 = JSON.parse(str);console.log(user2.age,user2.name,user2.sex);</script> </body> </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亂碼處理--><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper"><bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="failOnEmptyBeans" value="false"/></bean></property></bean></mvc:message-converters></mvc:annotation-driven>

再次測試,發現亂碼問題得到解決

將對象解析成為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、前端輸出

@RequestMapping(value = "/f1")public String 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);return jsonString;}

5、測試

這些工具類,我們只需要掌握使用就好了,在使用的時候再根據具體的業務去找對應的實現。

在開發中,我們更偏向于使用Jackson解析,FastJson只適用于一些簡單對象的轉換。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的SpringMVC(三)——JSON的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。