当前位置: 首页 > news >正文

JAVA-springboot JOSN解析库

SpringBoot从入门到精通-第12章 JOSN解析库

一、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;@RestControllerpublic 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,请求参数值与程序逻辑判断值不一致时
在这里插入图片描述

三、遇到的问题

  1. 请求时注意根据验证的请求体格式选择
    在这里插入图片描述

http://www.xdnf.cn/news/865495.html

相关文章:

  • 华为云Flexus+DeepSeek征文|华为云Flexus服务器dify平台通过自然语言转sql并执行实现电商数据分析
  • 通用寄存器的 “不通用“ 陷阱:AX/CX/DX 的寻址禁区与突围之道
  • 科技创新驱动人工智能,计算中心建设加速产业腾飞​
  • 【设计模式-4.8】行为型——中介者模式
  • 【网络安全】漏洞分析:阿帕奇漏洞学习
  • Python实例题: Python 的简单电影信息
  • 舆情监控系统爬虫技术解析
  • go语言学习 第5章:函数
  • SQL-为什么缺少 COUNT(*) 会导致总行数返回1
  • Android 轻松实现 增强版灵活的 滑动式表格视图
  • 前端面试三之控制语句
  • el-input限制输入数字,输入中文后数字校验失效
  • 【输入URL到页面展示】
  • 一文读懂RAG流程中用到的请求参数与返回字段
  • HTMLCSS 学习总结
  • (T/SAIAS 020-2024)《医疗大模型语料一体机应用指南》深度解读与实施分析
  • Shiro安全权限框架
  • OpenCV CUDA模块图像处理------图像连通域标记接口函数connectedComponents()
  • iOS UIActivityViewController 组头处理
  • OSPF域间路由
  • fastadmin fildList 动态下拉框默认选中
  • parquet :开源的列式存储文件格式
  • 【PhysUnits】15.13 SI类型级量纲(dimension.rs)
  • 针对KG的神经符号集成综述 两篇
  • 企业级实战之Iptables防火墙案例分析
  • 11. 试学内容-如何理解隔离性2(原理)
  • mysql知识点
  • Axios学习笔记
  • 技术文档的降维打击:3大原则+5步结构+CSDN流量密码
  • 瀚文机械键盘固件开发详解:HWKeyboard.cpp文件解析与应用