【SpringBoot篇】5种类型参数传递json数据传参的操作
🎊专栏【SpringBoot】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰
文章目录
- 🌺普通参数
- 🌺POJO参数
- 🌺嵌套pojo参数
- 🌺数组参数
- 🌺集合参数
- 🎄json数据传参
- 🛸json格式
- 🛸嵌套json格式
- 🛸集合格式

当涉及到参数传递时,Spring Boot遵循HTTP协议,并支持多种参数传递方式。这些参数传递方式可以根据请求的不同部分进行分类。
- 路径参数(Path Parameters):
路径参数是指在URL路径中的一部分,用于标识资源或指定操作。路径参数通常以{}的形式出现在URL中,如/users/{id},其中id就是一个路径参数。路径参数可以在URL中动态地改变,从而实现对不同资源的操作。使用路径参数时,Spring Boot使用@PathVariable注解将路径参数绑定到方法参数上。 - 查询参数(Query Parameters):
查询参数通常作为URL的一部分,以?开始,以key=value的形式出现,多个参数之间使用&连接,如/users?id=1&name=John。查询参数主要用于筛选或过滤资源。在Spring Boot中,可以使用@RequestParam注解将查询参数绑定到方法参数上。 - 请求体参数(Request Body Parameters):
请求体参数是通过HTTP请求体中发送的数据,通常用于传递复杂结构的数据,如JSON、XML等。请求体参数可以包含多个字段,并且可以表示更为复杂的数据模型。在Spring Boot中,可以使用@RequestBody注解将请求体参数绑定到方法参数上。 - 表单参数(Form Parameters):
表单参数通常使用HTML表单提交的数据,可以通过application/x-www-form-urlencoded或multipart/form-data格式传输。表单参数与查询参数类似,但是通常用于提交数据而不是进行筛选。在Spring Boot中,可以使用@RequestParam注解将表单参数绑定到方法参数上。 - 请求头参数(Request Header Parameters):
请求头参数包含在HTTP请求的头部信息中,可以用于传递附加的元数据,如鉴权信息、用户代理等。在Spring Boot中,可以使用@RequestHeader注解将请求头参数绑定到方法参数上。
使用理论进行讲解时,我们可以了解这些参数传递方式的原理和用途。根据HTTP协议的规范和Spring Boot的设计,开发人员可以选择合适的参数传递方式来满足业务需求。这些参数传递方式在RESTful API开发中非常常见,可以用于处理各种场景下的数据传输。
🌺普通参数
我们在UserController类中写入这一段代码
@RequestMapping("/commonParamDifferentname")@ResponseBodypublic String commonParamDifferentName(@RequestParam("name") String userName,int age){System.out.println("普通参数传递 userName ==> "+userName);System.out.println("普通参数传递 age ==> "+age);return "{'module':'common param different name'}";}

接收成功

🌺POJO参数
我们在User类中写入这一段代码
package com.example.domain;public class User {private String name;private int age;private Address address;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
我们在UserController类中写入这一段代码
//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){System.out.println("pojo参数传递 user ==> "+user);return "{'module':'pojo param'}";}

运行成功

🌺嵌套pojo参数
适用于下面这种,可以反复写

我们在Address类中写入这一段代码
package com.example.domain;
public class Address {private String province;private String city;@Overridepublic String toString() {return "Address{" +"province='" + province + '\'' +", city='" + city + '\'' +'}';}public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}
}
在UserController里面写入这一段代码
@RequestMapping("/pojoContainPojoParam")@ResponseBodypublic String pojoContainPojoParam(User user){System.out.println("pojo嵌套pojo参数传递 user ==> "+user);return "{'module':'pojo contain pojo param'}";}
继续测试

运行成功

🌺数组参数
@RequestMapping("/arrayParam")@ResponseBodypublic String arrayParam(String[] likes){System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));return "{'module':'array param'}";}


运行成功

🌺集合参数
@RequestMapping("/listParam")@ResponseBodypublic String listParam(@RequestParam List<String> likes){System.out.println("集合参数传递 likes ==> "+ likes);return "{'module':'list param'}";}


运行成功

🎄json数据传参
我们在SpringMvcConfig里面加入这一段代码@EnableWebMvc,开启json数据自动转换

🛸json格式
我们找到上面 集合参数 的代码,把@RequestParam修改为@RequestBody
@RequestMapping("/listParamForJson")@ResponseBodypublic String listParamForJson(@RequestBody List<String> likes){System.out.println("list common(json)参数传递 list ==> "+likes);return "{'module':'list common for json param'}";}

这里选择json,在下面写入数据

发现可以运行成功

🛸嵌套json格式
@RequestMapping("/pojoParamForJson")@ResponseBodypublic String pojoParamForJson(@RequestBody User user){System.out.println("pojo(json)参数传递 user ==> "+user);return "{'module':'pojo for json param'}";}

运行成功

🛸集合格式
@RequestMapping("/listPojoParamForJson")@ResponseBodypublic String listPojoParamForJson(@RequestBody List<User> list){System.out.println("list pojo(json)参数传递 list ==> "+list);return "{'module':'list pojo for json param'}";}
如果报错,重启一下就好了

运行成功


相关文章:
【SpringBoot篇】5种类型参数传递json数据传参的操作
🎊专栏【SpringBoot】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🌺普通参数🌺POJO参数🌺嵌套…...
Mac系统升级node.js版本和npm版本
升级node.js版本 第一步:查询当前node.js版本 node -v 第二步:清除node.js的缓存 sudo npm cache clean -f 第三步:验证缓存是否清空 npm cache verify 第四步:安装n工具,n工具是专门用于管理node.js版本的工具…...
风力发电对讲 IP语音对讲终端IP安防一键呼叫对讲 医院对讲终端SV-6005网络音频终端
风力发电对讲 IP语音对讲终端IP安防一键呼叫对讲 医院对讲终端SV-6005网络音频终端 目 录 1、产品规格 2、接口使用 2.1、侧面接口功能 2.2、背面接口功能 2.3、面板接口功能 3、功能使用 1、产品规格 输入电源: 12V~24V的直流电源 网络接口&am…...
智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜉蝣算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜉蝣算法4.实验参数设定5.算法结果6.参考文献7.MA…...
pymysql报错: unable to rollback、Already closed
参考: https://www.coder.work/article/4516746 https://www.cnblogs.com/leijiangtao/p/11882107.html https://stackoverflow.com/questions/55116007/pymysql-query-unable-to-rollback unable to rollback处理: # 关闭光标对象 cursor.close() # 关…...
[Linux] Web基础知识与http协议
一、HTML 1.1 HTML 的概念 HTML被称为超文本标记语言。 它是规范和标准. 它通过标记符号来标记网页中出现的各个部分。网页文件本身就是一种文本文件。 通过向文本文件添加标记,您可以告诉浏览器如何显示其中的内容。 HTML命令可以描述文本、图形、动画、声音、表格…...
2020年第九届数学建模国际赛小美赛B题血氧饱和度的变异性解题全过程文档及程序
2020年第九届数学建模国际赛小美赛 B题 血氧饱和度的变异性 原题再现: 脉搏血氧饱和度是监测患者血氧饱和度的常规方法。在连续监测期间,我们希望能够使用模型描述血氧饱和度的模式。 我们有36名受试者的数据,每个受试者以1 Hz的频率连…...
【Flink on k8s】- 11 - 使用 Flink kubernetes operator 运行 Flink 作业
目录 1、创建本地镜像库 1.1 拉取私人仓库镜像 1.2 运行 1.3 本地浏览器访问 5000 端口...
【Linux】系统初识之冯诺依曼体系结构与操作系统
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.冯诺依曼体系结构 2.操作…...
【PyTorch】模型训练过程优化分析
文章目录 1. 模型训练过程划分1.1. 定义过程1.1.1. 全局参数设置1.1.2. 模型定义 1.2. 数据集加载过程1.2.1. Dataset类:创建数据集1.2.2. Dataloader类:加载数据集 1.3. 训练循环 2. 模型训练过程优化的总体思路2.1. 提升数据从硬盘转移到CPU内存的效率…...
GO -- 设计模式
整篇文档参考了各大神对设计模式的总结,然后整理的一篇关于使用GO来实现设计模式的文档,如有问题,请批评指正! 目录 设计模式的优点 设计模式的六大原则 设计模式,即Design Patterns,是指在软件设计…...
angular状态管理方案(ngrx)
完全基于redux的ngrx方案,我们看看在angular中如何实现。通过一个简单的计数器例子梳理下整个流程 一 安装 :npm i ngrx/store 这里特别要注意一点:安装 ngrx/store的时候会出现和angular版本不一致的问题 所以检查一下angular/core的版本…...
EPICS modbus 模块数字量读写练习
本文使用modbus slave软件模拟一个受控的modbus设备,此模拟设备提供如下功能: 1、线圈组1,8个线圈,起始地址为0,数量为8,软件设置如下(功能码1),用于测试功能码5,一次写一个线圈&am…...
万界星空科技低代码平台:搭建MES系统的优势
低代码MES系统:制造业数字化转型的捷径 随着制造业的数字化转型,企业对生产管理系统的需求逐渐提高。传统的MES系统实施过程复杂、成本高昂,已经无法满足现代企业的快速发展需求。而低代码搭建MES系统的出现,为企业提供了一种高…...
【ArcGIS微课1000例】0078:创建点、线、面数据的最小几何边界
本实例为专栏系统文章:讲述在ArcMap10.6中创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具位于:数…...
五花八门客户问题(BUG) - 数据库索引损坏
问题 曾经有个客户问题,让我们开发不知所措了很久。简单点说就是客户的index周期性的损坏,即使全部重建后经历大约1~2周数据update后也会坏掉。导致的直接结果:select出来的数据不对。问题很严重。 直接看损坏的index文件看不出什么蛛丝马迹…...
mysql select count 非常慢
MySQL select count 性能分析 问题:mysql 在count时发现非常慢 select count(*) from xxx; 无论执行多少次,查询速度基本稳定在10-12秒之间 环境说明 windows11 x64SSD硬盘MySQL8.0.35数据库引擎为InnoDB数据行数不到3万行,但是数据量将近…...
Tomcat管理功能使用
前言 Tomcat管理功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,需要配置管理用户,即配置tomcat-users.xml文件。 !!!注意:测试功…...
kyuubi整合flink yarn session mode
目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中,需要注意对应的版本。 注意以上版本 配置 ky…...
err_connect_length_mismatch错误
原因: 官网解释为:err_content_length_mismatch:错误的内容长度不匹配(请求的Heather 里content-length长度与返回的content-length不一致) 问题截图: 分析: 由截图可见,静态资源加载错误,提示err_content_length_mismatch,经排查,网络页签…...
Ubuntu 22.04 LTS下,UE5打包的程序报‘Vulkan设备找不到’?别急着重装驱动,先试试这个库文件修复法
Ubuntu 22.04 LTS下解决UE5 Vulkan设备报错的深度修复指南当你在Ubuntu 22.04 LTS上已经确认NVIDIA驱动安装成功(通过nvidia-smi验证),但Unreal Engine 5打包的程序仍然抛出"Vulkan设备找不到"的错误时,问题往往比表面看…...
C#中协变逆变的实现
1. 协变与逆变的概念协变(Covariance)允许将子类(派生类)类型作为父类(基类)类型使用。例如:IEnumerable<string> 可以被视为 IEnumerable<object>,因为 string 是 obje…...
五八同城登录接口逆向:RSA加密、动态salt与sign验签实战
1. 这不是“爬个登录”那么简单:五八同城登录接口逆向的真实战场你点开浏览器开发者工具,F12,Network 面板里筛选 XHR,找到那个/login请求,点开看 Headers 和 Payload —— 然后傻眼了:password字段是一串 …...
CON-FOLD算法:为可解释规则注入置信度与剪枝优化
1. 项目概述:为规则赋予“可信度”的CON-FOLD算法在可解释机器学习(XAI)领域,我们常常面临一个核心矛盾:模型的可解释性与预测的可靠性如何兼得?像决策树、规则列表这类模型,其决策路径清晰可见…...
LeetCode 523:连续的子数组和 | 前缀和同余定理
LeetCode 523:连续的子数组和 | 前缀和同余定理 引言 连续的子数组和(Continuous Subarray Sum)是 LeetCode 第 523 题,难度为 Medium。题目要求判断数组中是否存在长度至少为 2 的连续子数组,其元素和是 K 的倍数。这…...
量子互联网:原理、挑战与未来应用
1. 量子互联网的技术本质与核心价值量子互联网并非传统互联网的简单升级,而是一种基于量子力学原理的全新通信范式。其核心在于利用量子纠缠这一独特物理现象,实现传统通信手段无法企及的功能。在传统互联网中,信息以经典比特(0或…...
Unity安装包瘦身实战:从2.3GB到680MB的工程化治理
1. 为什么一个500MB的Unity项目打包后会变成3GB?——安装包膨胀的真实逻辑“Unity安装包减肥”这六个字,听起来像在给软件做瑜伽,但实际是每个上线前夜都在咬牙硬扛的生存战。我做过7个已上线的Unity手游项目,最深的体会是&#x…...
OmenSuperHub:惠普OMEN游戏本终极性能控制软件完全指南
OmenSuperHub:惠普OMEN游戏本终极性能控制软件完全指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 想要彻底掌控你的惠普OMEN游戏本性能吗…...
2026年阿里云OpenClaw/Hermes Agent配置Token Plan怎么安装看这
2026年阿里云OpenClaw/Hermes Agent配置Token Plan怎么安装看这。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
【AI入门知识点】告别繁琐配置!Claude Code + DeepSeek 直连方案打造最强 VSCode 编程助手
在 AI 编程领域,Claude Code 凭借其强大的 Agent 能力(自动读写文件、执行命令)一直是开发者的梦中情“器”。然而,官方 API 的高昂费用和网络限制,让许多国内开发者望而却步。 这篇文章我们不通过 cc-switch 转发请求…...

