springboot項目中使用JOSN解析庫的方法
一、JSON解析簡介
在當下流行的前后端分離的項目中,傳遞數(shù)據(jù)時不可或缺的。為了保證在傳遞數(shù)據(jù)的過程中不丟失信息,就需要一種讓前端和后端都識別的傳遞數(shù)據(jù)的格式,這種傳遞數(shù)據(jù)的格式就是JSON。其中,前端需要的是以“鍵:值”結(jié)構(gòu)保存的JSON數(shù)據(jù),后端需要的是JavaBean。
JSON,全程是JavaScript Object Notation,是一種輕量級的數(shù)據(jù)交換格式。所謂數(shù)據(jù)交換格式,指的是前端和后端之間傳遞數(shù)據(jù)的格式。
相比于XML格式,JSON是輕量級的。
JSON格式例子:
{“name”:“sun”} { “name”:“sun”, “age”:22 } {“arr”:[1,2,3,4]} {“people”:{“id”:111,“name”:“sun”,“age”:22}}
對于一個前后端分離的Spring Boot項目而言,前端需要的是以“鍵:值”結(jié)構(gòu)保存的JSON數(shù)據(jù),后端需要的是JavaBean,這就需要使用json解析庫實現(xiàn)序列化與反序列化。
序列化指的是JavaBean轉(zhuǎn)化為JSON數(shù)據(jù),反序列化反之。
當前常用的兩種JSON解析庫,一種是Spring Boot內(nèi)置的Jackson,另一種是由阿里巴巴開發(fā)的FastJson。
下面程序?qū)嵗褂肍astJson舉例。
二、Spring Boot項目中使用JSON解析
1、pom.xml文件引入依賴
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version> </dependency>
整體pom.xml文件內(nèi)容
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.5.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mr</groupId> <artifactId>_20250603spring_fastjson</artifactId> <version>0.0.1-SNAPSHOT</version> <name>20250603spring_fastjson</name> <description>20250603spring_fastjson</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、編寫Controller
序列化方法
String text = JSON.toJSONString(obj)
反序列化方法
VO vo = JSON.parseObject(json, VO.class)
注:
obj:被轉(zhuǎn)換的對象
VO:與JSON數(shù)據(jù)對應(yīng)的實體類
package com.mr._20250603spring_fastjson; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController public class Controller { Bean bean = new Bean("sun",22); // @GetMapping @RequestMapping("/login") public String login(@RequestBody String json){ Map loginDate = JSON.parseObject(json, Map.class); String username = loginDate.get("username").toString(); String password = loginDate.get("password").toString(); Map<String,String> result = new HashMap<>(); String code = ""; String msg = ""; if ("mr".equals(username) && "123".equals(password)){ code = "200"; msg = "登錄成功"; }else { code = "500"; msg = "賬號或密碼錯誤"; } result.put("code",code); result.put("msg",msg); return JSON.toJSONString(result); // System.out.println("wdwdwdw"); // System.out.println("bean"+bean); // String str = JSON.toJSONString(bean); // System.out.println("bean_json"+ str); // return str; } }
3、apipost工具測試
3.1請求格式為json,請求參數(shù)值與程序邏輯判斷值一致時
3.2請求格式為json,請求參數(shù)值與程序邏輯判斷值不一致時
三、遇到的問題
請求時注意根據(jù)驗證的請求體格式選擇
到此這篇關(guān)于springboot JOSN解析庫的文章就介紹到這了,更多相關(guān)springboot json解析庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring中的注解@@Transactional失效的場景代碼演示
這篇文章主要介紹了spring中的注解@@Transactional失效的場景代碼演示,@Transactional注解是Spring框架提供的用于聲明事務(wù)的注解,作用于類和方法上,需要的朋友可以參考下2024-01-01spring使用aspect注解切面不起作用的排查過程及解決
這篇文章主要介紹了spring使用aspect注解切面不起作用的排查過程及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06Mapstruct對象插入數(shù)據(jù)庫某個字段總是為空的bug詳解
這篇文章主要為大家介紹了在一次需求開發(fā)Mapstruct中對象插入數(shù)據(jù)庫某個字段總是為空的bug問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07Spring security基于數(shù)據(jù)庫中賬戶密碼認證
這篇文章主要介紹了Spring security基于數(shù)據(jù)庫中賬戶密碼認證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03