欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring請求如何傳遞 JSON 數據

 更新時間:2025年07月30日 15:26:57   作者:椰椰椰耶  
JSON就是一種數據格式,有自己的格式和語法,使用文本表示一個對象或數組的信息,因此JSON本質是字符串,主要負責在不同的語言中數據傳遞和交換,下面通過本文給大家介紹Spring請求如何傳遞JSON數據,感興趣的朋友一起看看吧

JSON 概念

JSON:JavaScript Object Notation【JavaScript 對象表示法】

JSON 就是一種數據格式,有自己的格式和語法,使用文本表示一個對象或數組的信息,因此 JSON 本質是字符串,主要負責在不同的語言中數據傳遞和交換

類似于:

  • 國際通用語言——英語
  • 中國 56 個民族不同地區(qū)的通用語言——普通話
    有自己的語法,其他語言也認識

JSONJavaScript 沒有關系,只是語法類似,JavaScript 開發(fā)者能更快的上手而已,但是他的語法本身比較簡單,所以也很好學

JSON 語法

JSON 是一個字符串,其格式非常類似于 JavaScript 對象字面量的格式。我們先來看一段 JSON 數據:

{
    "squadName": "Super hero squad",
    "homeTown": "Metro City",
    "formed": 2016,
    "secretBase": "Super tower",
    "active": true,
    "members": [
        {
            "name": "Molecule Man",
            "age": 29,
            "secretIdentity": "Dan Jukes",
            "powers": [
                "Radiation resistance","Turning tiny","Radiation blast"]
        },
        {
            "name": "Madame Uppercut",
            "age": 39,
            "secretIdentity": "Jane Wilson",
            "powers": [
                "Million tonne punch","Damage resistance","Superhuman reflexes"]
        },
        {
            "name": "Eternal Flame",
            "age": 1000000,
            "secretIdentity": "Unknown",
            "powers": [
                "Immortality","Heat Immunity","Inferno","Teleportation"]
        }
    ]
}

也可以壓縮表示:

{"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast"]},{"name":"Madame Uppercut","age":39,"secretIdentity":"Jane Wilson","powers":["Million tonne punch","Damage resistance","Superhuman reflexes"]},{"name":"Eternal Flame","age":1000000,"secretIdentity":"Unknown","powers":["Immortality","Heat Immunity","Inferno","Teleportation"]}]}
  • 和上面描述的數據一樣,只不過上面進行了格式化,更易讀

JSON 的語法

  • 數據在鍵值對(Key/Value)中
  • 數據由 , 分隔
  • 對象用 {} 表示
  • 數組用 [] 表示
  • 值可以為對象,也可以為數組,數組中可以包含多個對象

JSON 的兩種結構

  • 對象:大括號 {} 保存的對象是一個無序的鍵值對集合。一個對象以左括號 { 開始,右括號 } 結束。每個“”后跟一個冒號 :,鍵值對使用逗號 , 分隔
  • 數組:中括號 [] 保存的數組是值(value)的有序集合。一個數組以左中括號 [ 開始,右中括號 ] 結束。值之間使用 , 分隔

所以,以下都是合法的 JSON 數據:

{"name": "admin", "age": 18}  
["hello", 3.1415, "json"]  
[{"name": "admin", "age": 18}, {"name": "root", "age": 16}, {"name": "張三", "age": 20}]

JSON 字符串和 Java 對象互轉

JSON 本質上是一個字符串,通過文本來存儲和描述數據

Spring MVC 框架也集成了 JSON 的轉換工具,我們可以直接使用,來完成 JSON 字符串和 Java 對象的互轉

本質上是 jackson-databind 提供的功能,Spring MVC 框架中已經把該工具包引入了進來,我們可以直接進行使用。如果脫離了 Spring MVC 使用,就需要引入相關依賴

<dependency>  
    <groupId>com.faster.jackson.core</groupId>  
    <artifactId>jackson-databind</artifactId>  
    <version>2.13.5</version>  
</dependency>
  • JSON 的轉換工具包有很多,jackson-databind 只是其中一種
import com.fasterxml.jackson.core.JsonProcessingException;  
import com.fasterxml.jackson.databind.ObjectMapper;  
public class JSONUtils {  
    private static ObjectMapper objectMapper = new ObjectMapper();  
    public static void main(String[] args) throws JsonProcessingException {  
        Person person = new Person();  
        person.setId(4444);  
        person.setName("Yechiel");  
        person.setPassword("3018");  
        //對象轉為 JSON 字符串  
        String jsonStr = objectMapper.writeValueAsString(person);  
        System.out.println(jsonStr);  
        //JSON 字符串轉為對象  
        Person p = objectMapper.readValue(jsonStr,Person.class);  
        System.out.println("轉換的對象id: "+p.getId()+", name: "+
        p.getName()+", password: "+p.getPassword());  
    }  
}
  • 使用 ObjectMapper 對象提供的兩個方法,可以完成對象和 JSON 字符串的互轉
  • writeValueAsString:把對象轉換為 JSON 字符串
  • readValue:把 JSON 字符串轉換為對象

JSON 優(yōu)點

  1. 簡單易用:語法簡單,易于理解和編寫,可以快速地進行數據交換
  2. 跨平臺支持:JSON 可以被多種編程語言解析和生成,可以在不同的平臺和語言之間進行數據交換和傳輸
  3. 輕量級:相較于 XML 格式,JSON 數據格式更加輕量級,傳輸數據時占用帶寬較小,可以提高數據傳輸速度
  4. 易于擴展:JSON 的數據結構靈活,支持嵌套對象和數組等復雜的數據結構,便于擴展和使用
  5. 安全性:JSON 數據格式是一種純文本格式,不包含可執(zhí)行代碼,不會執(zhí)行惡意代碼,因此具有較高的安全性

基于以上特點,JSON 在 Web 應用程序中被廣泛使用,如前后端交互,API 接口數據傳輸等

傳遞 JSON 對象

接收 JSON 對象,需要使用 @RequestBody 注解

  • RequestBody:請求正文,意思是這個注解作用在請求正文的數據綁定,請求參數必須寫在正文中

后端實現:

@RequestMapping("/m8")  
    public Object method8(@RequestBody Person person){  
        return person.toString();  
    }  
}

使用 Postman 來發(fā)送 JSON 請求:

  • 可以看到,后端正確接收了,通過 Fiddler 觀察一下請求參數

嘗試去掉 @RequestBody 試試

@RequestMapping("/m9")  
public Object method9(Person person){  
    return person.toString();  
}

請求響應結果如下:

  • 后端未能成功給 Person 對象賦值

到此這篇關于Spring請求如何傳遞 JSON 數據的文章就介紹到這了,更多相關spring 傳遞 json 數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis-plus如何更新Null字段詳解

    Mybatis-plus如何更新Null字段詳解

    MyBatis-plus在進行更新操作時不會更新傳入實體中為null或默認值屬性字段,只更新不為null的值、非默認值的屬性字段,這篇文章主要給大家介紹了關于Mybatis-plus如何更新Null字段的相關資料,需要的朋友可以參考下
    2023-07-07
  • java LinkedList的實例詳解

    java LinkedList的實例詳解

    這篇文章主要介紹了java LinkedList的實例詳解的相關資料,通過本文希望大家能徹底了解掌握這部分內容,需要的朋友可以參考下
    2017-09-09
  • MyBatis常用標簽以及使用技巧總結

    MyBatis常用標簽以及使用技巧總結

    在我們的學習過程中,我們經常使用到mybatis,這篇文章主要給大家介紹了關于MyBatis常用標簽以及使用技巧的相關資料,需要的朋友可以參考下
    2021-05-05
  • java的前期綁定和后期綁定使用示例

    java的前期綁定和后期綁定使用示例

    java的前期綁定在程序執(zhí)行前根據編譯時類型綁定,調用開銷較小,如C語言只有前期綁定這種方法調用
    2014-02-02
  • 關于servlet向mysql添加數據時中文亂碼問題的解決

    關于servlet向mysql添加數據時中文亂碼問題的解決

    最近在工作中遇到一個小問題,出現了中文亂碼的問題,無奈只能想辦法解決,下面這篇文章主要給大家介紹了關于servlet向mysql添加數據時中文亂碼問題的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Spring Cloud 專題之Sleuth 服務跟蹤實現方法

    Spring Cloud 專題之Sleuth 服務跟蹤實現方法

    這篇文章主要介紹了Spring Cloud 專題之Sleuth 服務跟蹤,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 詳解java實現簡單掃碼登錄功能(模仿微信網頁版掃碼)

    詳解java實現簡單掃碼登錄功能(模仿微信網頁版掃碼)

    這篇文章主要介紹了java實現簡單掃碼登錄功能(模仿微信網頁版掃碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Java并發(fā)編程之詳解ConcurrentHashMap類

    Java并發(fā)編程之詳解ConcurrentHashMap類

    在之前的文章中已經為大家介紹了java并發(fā)編程的工具:BlockingQueue接口、ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue、BlockingDeque接口,本文為系列文章第八篇.需要的朋友可以參考下
    2021-06-06
  • IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟記錄

    IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟記錄

    這篇文章主要給大家介紹了關于IDEA2020.2.3中創(chuàng)建JavaWeb工程的完整步驟,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 詳解Java5、Java6、Java7的新特性

    詳解Java5、Java6、Java7的新特性

    本編文章詳細介紹了Java5、Java6、Java7的新特性,需要的朋友可以參考下
    2017-04-04

最新評論