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

Spring?請(qǐng)求之傳遞?JSON?數(shù)據(jù)的操作方法

 更新時(shí)間:2025年04月24日 14:52:29   作者:椰椰椰耶  
JSON 就是一種數(shù)據(jù)格式,有自己的格式和語(yǔ)法,使用文本表示一個(gè)對(duì)象或數(shù)組的信息,因此 JSON 本質(zhì)是字符串,主要負(fù)責(zé)在不同的語(yǔ)言中數(shù)據(jù)傳遞和交換,這篇文章主要介紹了Spring請(qǐng)求之傳遞JSON數(shù)據(jù)的相關(guān)知識(shí),需要的朋友可以參考下

JSON 概念

JSON:JavaScript Object Notation【JavaScript 對(duì)象表示法】

JSON 就是一種數(shù)據(jù)格式,有自己的格式和語(yǔ)法,使用文本表示一個(gè)對(duì)象或數(shù)組的信息,因此 JSON 本質(zhì)是字符串,主要負(fù)責(zé)在不同的語(yǔ)言中數(shù)據(jù)傳遞和交換

類似于:

  • 國(guó)際通用語(yǔ)言——英語(yǔ)
  • 中國(guó) 56 個(gè)民族不同地區(qū)的通用語(yǔ)言——普通話
    有自己的語(yǔ)法,其他語(yǔ)言也認(rèn)識(shí)

JSONJavaScript 沒(méi)有關(guān)系,只是語(yǔ)法類似,JavaScript 開(kāi)發(fā)者能更快的上手而已,但是他的語(yǔ)法本身比較簡(jiǎn)單,所以也很好學(xué)

JSON 語(yǔ)法

JSON 是一個(gè)字符串,其格式非常類似于 JavaScript 對(duì)象字面量的格式。我們先來(lái)看一段 JSON 數(shù)據(jù):

{
    "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"]}]}

和上面描述的數(shù)據(jù)一樣,只不過(guò)上面進(jìn)行了格式化,更易讀

JSON 的語(yǔ)法

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

JSON 的兩種結(jié)構(gòu)

對(duì)象:大括號(hào) {} 保存的對(duì)象是一個(gè)無(wú)序的鍵值對(duì)集合。一個(gè)對(duì)象以左括號(hào) { 開(kāi)始,右括號(hào) } 結(jié)束。每個(gè)“”后跟一個(gè)冒號(hào) :,鍵值對(duì)使用逗號(hào) , 分隔

數(shù)組:中括號(hào) [] 保存的數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以左中括號(hào) [ 開(kāi)始,右中括號(hào) ] 結(jié)束。值之間使用 , 分隔

所以,以下都是合法的 JSON 數(shù)據(jù):

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

JSON 字符串和 Java 對(duì)象互轉(zhuǎn)

JSON 本質(zhì)上是一個(gè)字符串,通過(guò)文本來(lái)存儲(chǔ)和描述數(shù)據(jù)

Spring MVC 框架也集成了 JSON 的轉(zhuǎn)換工具,我們可以直接使用,來(lái)完成 JSON 字符串和 Java 對(duì)象的互轉(zhuǎn)

本質(zhì)上是 jackson-databind 提供的功能,Spring MVC 框架中已經(jīng)把該工具包引入了進(jìn)來(lái),我們可以直接進(jìn)行使用。如果脫離了 Spring MVC 使用,就需要引入相關(guān)依賴

<dependency>  
    <groupId>com.faster.jackson.core</groupId>  
    <artifactId>jackson-databind</artifactId>  
    <version>2.13.5</version>  
</dependency>

JSON 的轉(zhuǎn)換工具包有很多,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");  
        //對(duì)象轉(zhuǎn)為 JSON 字符串  
        String jsonStr = objectMapper.writeValueAsString(person);  
        System.out.println(jsonStr);  
        //JSON 字符串轉(zhuǎn)為對(duì)象  
        Person p = objectMapper.readValue(jsonStr,Person.class);  
        System.out.println("轉(zhuǎn)換的對(duì)象id: "+p.getId()+", name: "+
        p.getName()+", password: "+p.getPassword());  
    }  
}
  • 使用 ObjectMapper 對(duì)象提供的兩個(gè)方法,可以完成對(duì)象和 JSON 字符串的互轉(zhuǎn)
  • writeValueAsString:把對(duì)象轉(zhuǎn)換為 JSON 字符串
  • readValue:把 JSON 字符串轉(zhuǎn)換為對(duì)象

JSON 優(yōu)點(diǎn)

  • 簡(jiǎn)單易用:語(yǔ)法簡(jiǎn)單,易于理解和編寫,可以快速地進(jìn)行數(shù)據(jù)交換
  • 跨平臺(tái)支持:JSON 可以被多種編程語(yǔ)言解析和生成,可以在不同的平臺(tái)和語(yǔ)言之間進(jìn)行數(shù)據(jù)交換和傳輸
  • 輕量級(jí):相較于 XML 格式,JSON 數(shù)據(jù)格式更加輕量級(jí),傳輸數(shù)據(jù)時(shí)占用帶寬較小,可以提高數(shù)據(jù)傳輸速度
  • 易于擴(kuò)展:JSON 的數(shù)據(jù)結(jié)構(gòu)靈活,支持嵌套對(duì)象和數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),便于擴(kuò)展和使用
  • 安全性:JSON 數(shù)據(jù)格式是一種純文本格式,不包含可執(zhí)行代碼,不會(huì)執(zhí)行惡意代碼,因此具有較高的安全性

基于以上特點(diǎn),JSON 在 Web 應(yīng)用程序中被廣泛使用,如前后端交互,API 接口數(shù)據(jù)傳輸?shù)?/p>

傳遞 JSON 對(duì)象

接收 JSON 對(duì)象,需要使用 @RequestBody 注解

RequestBody:請(qǐng)求正文,意思是這個(gè)注解作用在請(qǐng)求正文的數(shù)據(jù)綁定,請(qǐng)求參數(shù)必須寫在正文中

后端實(shí)現(xiàn):

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

使用 Postman 來(lái)發(fā)送 JSON 請(qǐng)求:

image.png|547

可以看到,后端正確接收了,通過(guò) Fiddler 觀察一下請(qǐng)求參數(shù)

image.png|540

嘗試去掉 @RequestBody 試試

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

請(qǐng)求響應(yīng)結(jié)果如下:

image.png|654

后端未能成功給 Person 對(duì)象賦值

到此這篇關(guān)于Spring 請(qǐng)求之傳遞 JSON 數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Spring 請(qǐng)求傳遞 JSON 數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Initializr只能創(chuàng)建為Java?17版本以上的問(wèn)題解決

    Spring?Initializr只能創(chuàng)建為Java?17版本以上的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問(wèn)題的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • JPA設(shè)置默認(rèn)字段及其長(zhǎng)度詳解

    JPA設(shè)置默認(rèn)字段及其長(zhǎng)度詳解

    JPA是Java Persistence API的簡(jiǎn)稱,中文名Java持久層API,是JDK 5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。本文主要介紹了JPA如何設(shè)置默認(rèn)字段及其長(zhǎng)度,感興趣的同學(xué)可以了解一下
    2021-12-12
  • SpringBoot JavaMailSender發(fā)送郵件功能

    SpringBoot JavaMailSender發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了SpringBoot JavaMailSender發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • RocketMQ消息積壓原因及處理方法

    RocketMQ消息積壓原因及處理方法

    RocketMQ是一種可靠的、可擴(kuò)展的消息中間件,廣泛應(yīng)用于分布式系統(tǒng)中的消息通信,然而,在高并發(fā)的場(chǎng)景下,由于消息產(chǎn)生速度超過(guò)消費(fèi)速度,可能會(huì)導(dǎo)致消息積壓的問(wèn)題,本文將介紹RocketMQ消息積壓的原因和如何處理積壓?jiǎn)栴}
    2023-06-06
  • 調(diào)用Mybatis?plus中的saveBatch方法報(bào)找不到表的問(wèn)題

    調(diào)用Mybatis?plus中的saveBatch方法報(bào)找不到表的問(wèn)題

    在用Mybatis plus開(kāi)發(fā)的項(xiàng)目中,用自帶的API批量保存的方法saveBatch操作時(shí),發(fā)現(xiàn)報(bào)沒(méi)有找到表的錯(cuò)誤,本文就來(lái)詳細(xì)的介紹一下解決方法,感興趣的可以了解一下
    2024-03-03
  • SpringBoot實(shí)現(xiàn)文件在線預(yù)覽功能的全過(guò)程

    SpringBoot實(shí)現(xiàn)文件在線預(yù)覽功能的全過(guò)程

    我們開(kāi)發(fā)業(yè)務(wù)系統(tǒng)的時(shí)候,經(jīng)常有那種文檔文件在線預(yù)覽的需求,下面這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)文件在線預(yù)覽功能的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 使用ObjectMapper把Json轉(zhuǎn)換為復(fù)雜的實(shí)體類

    使用ObjectMapper把Json轉(zhuǎn)換為復(fù)雜的實(shí)體類

    這篇文章主要介紹了使用ObjectMapper把Json轉(zhuǎn)換為復(fù)雜的實(shí)體類操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Eclipse?2022?設(shè)置中文漢化的超詳細(xì)圖文教程

    Eclipse?2022?設(shè)置中文漢化的超詳細(xì)圖文教程

    這篇文章主要介紹了Eclipse?2022?設(shè)置中文漢化的超詳細(xì)圖文教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java實(shí)現(xiàn)圖片倒影的源碼實(shí)例內(nèi)容

    Java實(shí)現(xiàn)圖片倒影的源碼實(shí)例內(nèi)容

    在本篇文章里小編給大家整理的是關(guān)于Java實(shí)現(xiàn)圖片倒影的源碼以及相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-09-09
  • Springboot初始化項(xiàng)目并完成登入注冊(cè)的全過(guò)程

    Springboot初始化項(xiàng)目并完成登入注冊(cè)的全過(guò)程

    工作之余,想要學(xué)習(xí)一下SpringBoot,通過(guò)網(wǎng)絡(luò)大量教程最終成功運(yùn)行SpringBoot項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Springboot初始化項(xiàng)目并完成登入注冊(cè)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評(píng)論