一、json解析简介
在当下流行的前后端分离的项目中,传递数据时不可或缺的。为了保证在传递数据的过程中不丢失信息,就需要一种让前端和后端都识别的传递数据的格式,这种传递数据的格式就是json。其中,前端需要的是以“键:值”结构保存的json数据,后端需要的是javabean。
json,全程是javascript object notation,是一种轻量级的数据交换格式。所谓数据交换格式,指的是前端和后端之间传递数据的格式。
相比于xml格式,json是轻量级的。
json格式例子:
{“name”:“sun”} { “name”:“sun”, “age”:22 } {“arr”:[1,2,3,4]} {“people”:{“id”:111,“name”:“sun”,“age”:22}}
对于一个前后端分离的spring boot项目而言,前端需要的是以“键:值”结构保存的json数据,后端需要的是javabean,这就需要使用json解析库实现序列化与反序列化。
序列化指的是javabean转化为json数据,反序列化反之。
当前常用的两种json解析库,一种是spring boot内置的jackson,另一种是由阿里巴巴开发的fastjson。
下面程序实例使用fastjson举例。
二、spring boot项目中使用json解析
1、pom.xml文件引入依赖
<dependency> <groupid>com.alibaba</groupid> <artifactid>fastjson</artifactid> <version>1.2.9</version> </dependency>
整体pom.xml文件内容
<?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:被转换的对象
vo:与json数据对应的实体类
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,请求参数值与程序逻辑判断值一致时
3.2请求格式为json,请求参数值与程序逻辑判断值不一致时
三、遇到的问题
请求时注意根据验证的请求体格式选择
到此这篇关于springboot josn解析库的文章就介绍到这了,更多相关springboot json解析库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论