国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

六、Json 數(shù)據(jù)的交互處理

這篇具有很好參考價值的文章主要介紹了六、Json 數(shù)據(jù)的交互處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。



文章來源地址http://www.zghlxwxcb.cn/news/detail-685800.html


??? ???JSON 概況以及 JAVA 基本操作 JSON 數(shù)據(jù)的方式


一、JSON 數(shù)據(jù)的交互處理


1、為什么要使用 JSON

??? ???因?yàn)楝F(xiàn)在的項(xiàng)目大多數(shù)都是前后端分離的項(xiàng)目,前端和后端都獨(dú)立開發(fā)和部署。

??? ???由后端提供接口,前端從接口獲取數(shù)據(jù),將數(shù)據(jù)渲染到頁面上。前后端數(shù)據(jù)傳輸?shù)母袷骄褪?JSON!


2、JSON 和 JavaScript 之間的關(guān)系

  • JSON 和 JavaScript 的關(guān)系: JSON 是 JavaScript 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質(zhì)是一個字符串。

    var obj = {a: 'Hello', b: 'World'}; //這是一個對象,注意鍵名也是可以使用引號包裹的
    var json = '{"a": "Hello", "b": "World"}'; //這是一個 JSON 字符串,本質(zhì)是一個字符串
    

3、前端操作 JSON

  • 代碼示例

    • 創(chuàng)建一個 HTML 文件,在 < head > 中添加 < script > 標(biāo)簽編寫示例代碼

      • 注:< script > 必須成對出現(xiàn),否則不生效

        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        
            <script type="application/javascript">
        
        		// 創(chuàng)建對象,定義屬性并賦值
                var user = {
                    name:"姚青",
                    age:24,
                    sex:"男"
                }
                // 打印 user 對象
                console.log(user);
        
            </script>
        </head>
        <body>
        
        </body>
        </html>
        
      • 通過瀏覽器打開該文件,可以看到打印的對象(對象是可以打開的,字符串不行)

        六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring

3.1 JavaScript 對象與 JSON 字符串之間的相互轉(zhuǎn)換

  • 在 JavaScript 中默認(rèn)提供了一個 JSON 的類,這個類中提供了兩個方法,可以實(shí)現(xiàn) JSON 和 JavaScript 的相互轉(zhuǎn)換

    • parse() :將 JSON 字符串轉(zhuǎn)換為 JavaScript 對象

    • stringify() :將 JavaScript 對象轉(zhuǎn)換為 JSON 字符串

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      
          <script type="application/javascript">
      
              var user = {
                  name:"姚青",
                  age:24,
                  sex:"男"
              }
              // 打印正常對象
              console.log(user);
      
      		// 打印對象轉(zhuǎn)換后的JSON
              var json = JSON.stringify(user);
              console.log(json);
      
      		// 打印JSON轉(zhuǎn)換的JavaScript 對象
              var JavaScript = JSON.parse(json);
              console.log(JavaScript);
      
          </script>
      </head>
      <body>
      
      </body>
      </html>	
      
    • 執(zhí)行結(jié)果
      六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring




4、JAVA 操作 JSON

4.1 Json 的解析工具(Gson、FastJson、Jackson)

  • Gson:谷歌公司推出的Json解析工具

    • Gson 主要有 toJson 與 fromJson 兩個轉(zhuǎn)換方法,通過這兩個方法實(shí)現(xiàn) Json 與 Java 對象之間的相互轉(zhuǎn)換

    • Gson詳解用法


  • FastJson:阿里巴巴推出的Json解析工具

    • FastJson 在復(fù)雜類型的 Bean 轉(zhuǎn)換 Json 上會出現(xiàn)一些問題,可能會出現(xiàn)引用的類型,導(dǎo)致 Json 轉(zhuǎn)換出錯,需要制定引用。

    • FastJson 采用獨(dú)創(chuàng)的算法,將解析的速度提升到極致,超過所有 json 庫。

      • FastJson 依賴包,導(dǎo)入 pom.xml 中即可使用
        <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>fastjson</artifactId>
           <version>1.2.60</version>
        </dependency>
        
    • FastJson的使用方法


  • Jackson:Jackson 是比較著名的一個解析工具

    • Jackson 是當(dāng)前用的比較廣泛的,用來序列化和反序列化 json 的 Java 的開源框架

    • Jackson 社 區(qū)相對比較活躍,更新速度也比較快,是最流行的 json 解析器之一

      • Jackson 依賴包,導(dǎo)入 pom.xml 中即可使用

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                    <version>2.9.8</version>
        </dependency>
        
        • ObjectMapper 類

          • ObjectMapper 類(com.fasterxml.jackson.databind.ObjectMapper)是 Jackson 的主要類,它可以幫助我們快速的進(jìn)行各個類型和Json類型的相互轉(zhuǎn)換。

            • public String writeValueAsString(Object value): 將 Java 對象轉(zhuǎn)換成 JSON

        ObjectMapper 類詳解


  • 區(qū)別

    • FastJson的性能優(yōu)于Gson,但是處理復(fù)雜類型時可能會出現(xiàn)一些錯誤,到現(xiàn)在還有很多BUG沒修。
    • Gson的功能非常的齊全。
    • Jakson性能也非常出色,但是將核心功能拆分成三個模塊,有Jar依賴。

注:Java工具千千萬,處理 json 的工具有很多,大多數(shù)都是可以完成數(shù)據(jù)轉(zhuǎn)換這一過程的,只是不同的工具所呈現(xiàn)的效果不一。所以,選擇適合工具即可。




4.2 @ResponseBody 注解、@RestController 注解


  • @ResponseBody 注解

    • 1、概念

      • @ResponseBody 注解,使用在控制層(controller)的方法上。

    • 2、作用

      • ??? ???將方法的返回值,以特定的格式寫入到response的body區(qū)域,進(jìn)而將數(shù)據(jù)返回給客戶端。

        ??? ???當(dāng)方法上面沒有寫ResponseBody,底層會將方法的返回值封裝為ModelAndView對象。

        ??? ??? 如果返回值是字符串,那么直接將字符串寫到客戶端;如果是一個對象,會將對象轉(zhuǎn)化為 json 串,然后返回給客戶端。


  • @RestController 注解

    • 1、概念

      • @ResponseBody 注解,使用在控制層(controller)的類上。

    • 2、作用

      • ??? ??? @RestController 的作用等同于 @Controller + @ResponseBody。并且改注解的作用域是整個類,當(dāng)類被該注解標(biāo)記時,類中所有的方法都會返回 JSON ,不用再每一個方法上都添加 @ResponseBody了。

注:當(dāng)使用 @ResponseBody 注解和 @RestController 注解時,就不會去走視圖解析器了,直接返回一個字符串,




4.3 java 中操作 JSON 的方式:返回值不做處理,返回默認(rèn) json


  • 代碼示例:

    • 配置 SpringMVC 需要的配置

      • 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>
               <!--通過初始化參數(shù)指定SpringMVC配置文件的位置,進(jìn)行關(guān)聯(lián)-->
               <init-param>
                   <param-name>contextConfigLocation</param-name>
                   <param-value>classpath:SpringMVC-Servlet.xml</param-value>
               </init-param>
               <!-- 啟動順序,數(shù)字越小,啟動越早 -->
               <load-on-startup>1</load-on-startup>
           </servlet>
        
           <!--所有請求都會被springmvc攔截 -->
           <servlet-mapping>
               <servlet-name>SpringMVC</servlet-name>
               <url-pattern>/</url-pattern>
           </servlet-mapping>
        
           <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>
        
      • Spring 配置文件

        <?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/beans
               http://www.springframework.org/schema/beans/spring-beans.xsd
               http://www.springframework.org/schema/context
               https://www.springframework.org/schema/context/spring-context.xsd
               http://www.springframework.org/schema/mvc
               https://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
            <!-- 自動掃描指定的包,下面所有注解類交給IOC容器管理 -->
            <context:component-scan base-package="com.sys.controller"/>
        
        </beans>
        
    • 創(chuàng)建實(shí)體類

      @Data
      public class User {
      
          private String id;
          private String name;
          private int age;
          private String sex;
          private String pass;
          
          public User(String id, String name, int age, String sex, String pass) {
              this.id = id;
              this.name = name;
              this.age = age;
              this.sex = sex;
              this.pass = pass;
          }
      
      }
      
    • 創(chuàng)建 Controller

      @Controller
      public class UserController {
      
          @RequestMapping("/json")
          @ResponseBody
          public String getUserJson() {
      		return new User("1", "姚青", 999, "男", "123456").toString();
          }
      }
      
    • 啟動 tomcat,發(fā)現(xiàn)返回的 Json 中數(shù)字類型返回正常,中文亂碼

    六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring




4.3.1 配置亂碼過濾器(亂碼問題統(tǒng)一解決)

  • 在 Spring 配置文件中配置亂碼過濾器

    	<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>
    
  • 重新發(fā)布項(xiàng)目

    六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring




4.4 java 中操作 JSON 的方式: Jackson


  • 代碼示例1:將Java對象轉(zhuǎn)換成 JSON

    • 創(chuàng)建 controller,引入 Jackson 工具依賴其余內(nèi)容不變

      @RestController
      public class JacksonController {
      
          @RequestMapping("/getJackson")
          public String getJackson(){
      
      		User user = new User("1", "姚青", 999, "男", "123456");
      
              //創(chuàng)建 jackson 對象映射器,用來解析數(shù)據(jù)
              ObjectMapper objectMapper = new ObjectMapper();
              String str;
              try {
                  // 將 java 對象轉(zhuǎn)換成 json
                   str = objectMapper.writeValueAsString(user);
              } catch (JsonProcessingException e) {
                  throw new RuntimeException(e);
              }
              return str;
          }
          
      }
      
    • 啟動 tomcat,查看結(jié)果

      六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring


  • 代碼示例2:返回集合,通過 Jackson 將集合轉(zhuǎn)換成 JSON

    • 在 JacksonController 中新增接口

      @RestController
      public class JacksonController {
      
          @RequestMapping("/getJackson")
          public String getJackson() {
      
              User user = new User("1", "姚青", 999, "男", "123456");
      
              //創(chuàng)建 jackson 對象映射器,用來解析數(shù)據(jù)
              ObjectMapper objectMapper = new ObjectMapper();
              String str;
              try {
                  // 將 java 對象轉(zhuǎn)換成 json
                  str = objectMapper.writeValueAsString(user);
              } catch (JsonProcessingException e) {
                  throw new RuntimeException(e);
              }
              return str;
          }
      
      
          @RequestMapping("/getJackson2")
          public String getJackson2() {
      
              User user = new User("1", "姚青", 999, "男", "123456");
              User user2 = new User("2", "姚青2", 998, "男", "123456");
              User user3 = new User("3", "姚青3", 997, "男", "123456");
              User user4 = new User("4", "姚青4", 996, "男", "123456");
      
              List<User> list = new ArrayList<>();
              Collections.addAll(list, user, user2, user3, user4);
      
              //創(chuàng)建 jackson 對象映射器,用來解析數(shù)據(jù)
              ObjectMapper objectMapper = new ObjectMapper();
              String str;
              try {
                  // 將 java 對象轉(zhuǎn)換成 json
                  str = objectMapper.writeValueAsString(list);
              } catch (JsonProcessingException e) {
                  throw new RuntimeException(e);
              }
              return str;
          }
      
      }
      
    • 運(yùn)行結(jié)果

      六、Json 數(shù)據(jù)的交互處理,json,交互,mvc,spring




到了這里,關(guān)于六、Json 數(shù)據(jù)的交互處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringMVC06:Json交互處理

    SpringMVC06:Json交互處理

    目錄 一、什么是JSON? 二、代碼測試 1、新建一個module,SpringMVC-05-json,添加web支持和lib包 2、在index.jsp中編寫測試內(nèi)容 3、配置tomcat,啟動項(xiàng)目,在瀏覽器中打開,查看控制臺輸出 ?4、controller返回JSON數(shù)據(jù) 5、代碼優(yōu)化 1、亂碼統(tǒng)一解決 2、返回json字符串統(tǒng)一解決 六、測試集合

    2024年02月08日
    瀏覽(19)
  • QT練手小項(xiàng)目-——天氣播報小狗(ui展示分析,構(gòu)造實(shí)現(xiàn),json格式數(shù)據(jù)分析,界面交互,天氣圖標(biāo)處理,小狗語音)

    QT練手小項(xiàng)目-——天氣播報小狗(ui展示分析,構(gòu)造實(shí)現(xiàn),json格式數(shù)據(jù)分析,界面交互,天氣圖標(biāo)處理,小狗語音)

    前言 ? ? ? ? 經(jīng)過之前一段時間的QT學(xué)習(xí),做出一個小軟件來總結(jié)自己掌握關(guān)于qt的知識點(diǎn)。網(wǎng)絡(luò)上有許多免費(fèi)的天氣接口(api),有xml格式的,也有json格式的。具體xml和json有什么區(qū)別,這里我就不去深究了,我們這里用的是一個json格式的數(shù)據(jù),所以 重點(diǎn)是對json格式的數(shù)據(jù)

    2023年04月17日
    瀏覽(29)
  • Spring Boot進(jìn)階(70):如何在Spring Boot中使用FastJson實(shí)現(xiàn)高效的JSON數(shù)據(jù)處理?

    Spring Boot進(jìn)階(70):如何在Spring Boot中使用FastJson實(shí)現(xiàn)高效的JSON數(shù)據(jù)處理?

    ??隨著互聯(lián)網(wǎng)的發(fā)展,JSON(JavaScript Object Notation)已成為近年來使用最廣泛的數(shù)據(jù)交換格式之一。為了提高JSON數(shù)據(jù)的處理效率,目前市面上常用的JSON解析庫有Jackson、Gson、FastJson等。本文將介紹如何在Spring Boot中使用FastJson實(shí)現(xiàn)高效的JSON數(shù)據(jù)處理。 ??那么,具體如何實(shí)現(xiàn)

    2024年02月09日
    瀏覽(56)
  • Spring MVC -- 獲取參數(shù)(普通對象+JSON對象+URL地址參數(shù)+文件+Cookie/Session/Header)

    Spring MVC -- 獲取參數(shù)(普通對象+JSON對象+URL地址參數(shù)+文件+Cookie/Session/Header)

    目錄 1.獲取參數(shù) 1.1獲取單個參數(shù) 1.2獲取多個參數(shù) 傳參注意事項(xiàng): 2.獲取對象 ?3.后端參數(shù)重命名@RequestParam 4.獲取JSON對象@RequestBody 5.從 URL 地址中獲取參數(shù) @PathVariable 6.上傳文件 @RequestPart 7.獲取Cookie/Session/Header 7.1 獲取 Request 和 Response 對象 7.2 獲取Cookie (1)Servlet 獲取 Cooki

    2024年02月16日
    瀏覽(26)
  • JSON數(shù)據(jù)交互格式

    ? ? ? ? ?J SON: JavaScript 對象表示法( JavaScript Object Notation) 。是一種輕量級的數(shù)據(jù)交換格式。 它基于ECMAScript的一個子集。 JSON采用完全獨(dú)立于語言的文本格式, 但是也使用了類似于C語言家族的習(xí)慣( 包括C、 C++、 C#、 Java、 JavaScript、 Perl、 Python等) 。這些特性使JSON成

    2024年02月16日
    瀏覽(11)
  • 【W(wǎng)EEK3】 【DAY3】JSON交互處理第二部分【中文版】

    【W(wǎng)EEK3】 【DAY3】JSON交互處理第二部分【中文版】

    2024.3.13 Wednesday 接上文【W(wǎng)EEK3】 【DAY2】JSON交互處理第一部分【中文版】 上一種方法比較麻煩,如果項(xiàng)目中有許多請求則每一個都要添加,可以通過Spring配置統(tǒng)一指定,這樣就不用每次都處理亂碼了??梢栽趕pringmvc的配置文件上添加一段消息StringHttpMessageConverter轉(zhuǎn)換配置。 修

    2024年04月08日
    瀏覽(19)
  • 291_C++_發(fā)送json數(shù)據(jù)給對于的URL【JSON數(shù)據(jù)交互】

    元編程技巧 { boost::mpl::bool 的使用,在編譯時進(jìn)行條件編程時,能夠表示和操作布爾值。這里進(jìn)行了封裝使用對 模版T 進(jìn)行判斷} + 對原JSON庫 rapidjson::Document 的使用

    2024年02月05日
    瀏覽(15)
  • 【W(wǎng)EEK3】 【DAY2】JSON交互處理第一部分【中文版】

    【W(wǎng)EEK3】 【DAY2】JSON交互處理第一部分【中文版】

    2024.3.12 Tuesday JSON (JavaScript Object Notation, JS 對象標(biāo)記) 是一種 輕量級的數(shù)據(jù)交換格式 ,目前使用特別廣泛。 采用完全獨(dú)立于編程語言的文本格式來存儲和表示數(shù)據(jù)。 簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機(jī)器解析和生成,

    2024年03月20日
    瀏覽(28)
  • 前后端分離,JSON數(shù)據(jù)如何交互

    前后端分離,JSON數(shù)據(jù)如何交互

    在配置文件商法加上相應(yīng)注解? ?@EnableWebMvc 在接收的路徑上加上@RequestBody注解 注解的作用:在Spring框架中,@RequestBody注解用于將HTTP請求的body中的內(nèi)容轉(zhuǎn)換為Java對象,并將其作為參數(shù)傳遞給控制器方法。它通常用于處理POST和PUT請求,這些請求通常包含JSON或XML格式的數(shù)據(jù)。通

    2024年02月09日
    瀏覽(19)
  • 【Unity數(shù)據(jù)交互】JSON開山篇

    【Unity數(shù)據(jù)交互】JSON開山篇

    ?????個人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 :Unity基礎(chǔ)實(shí)戰(zhàn) JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,具有易于讀寫和解析的特點(diǎn),廣泛應(yīng)用于各種應(yīng)用程序中的數(shù)據(jù)

    2024年02月06日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包