SpringBoot 传入JSON对象参数
1.请求参数格式必须是正确的JSON。
2.在入参中使用注解@RequestBody,用于接收JSON参数,使其自动转对象
3.关于lombok在此产生的一点小坑,@Builder对@RequestBody的影响
4.标识请求参数的格式为JSON--->> @PostMapping(value="/Test",produces = "application/json;charset=UTF-8")
1.后端代码
@RestController
@RequestMapping("/Test")
public class TestController { @PostMapping(value="/Test",produces = "application/json;charset=UTF-8")
public ContentSet Test(@RequestBody CommandInfo commandInfo){ System.out.println(commandInfo);
return null;
}
}
2.实体类代码
@Getter
@Setter
@ToString
public class CommandInfo implements Serializable { private int XXX;
private int ZZZ;
private Map<String,String> ,mapPamater;
}
3.PostMan模拟请求

方法二:
@RequestMapping(value = "/addStockInAndDetails", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
@ResponseBody
@ApiOperation(value = "add in stock and details", notes = "商品入库")
@ApiResponse(response= String.class, code = 200, message = "接口返回对象参数")
public String addStockInAndDetails(@RequestBody StockInDetails details) {
System.out.println("-----------------"+details);
try { if(details==null) {
return "parameterError";
}
StockIn stockIn = new StockIn(details.getInCode(), details.getSupplyId(), details.getInStatus(), details.getInTime());
stockInService.insert(stockIn); if(stockIn.getInId()>0) { for (StockInDetail detail : details.getDetails()) {
detail.setInId(stockIn.getInId());
stockInDetailService.insert(detail); }
} return "success";
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
}
对于第二种方法,前端ajax使用情况:
//添加商品
$("#btnSave").click(function(){ var addInCode = $("#addInCode").val();
var AddSupply = $("#AddSupply").val();
var date = new Date();
var createTime = dateFormat("YYYY-mm-dd HH:MM:SS", date); if(addInCode == ""){
alert("入库单号不能为空");
return ;
}
var details = $("#stockInDetailTab").bootstrapTable('getData'); var paramData = {
"details": details,
"inCode": addInCode,
"inStatus": "0",
"inTime": createTime,
"supplyId": AddSupply
}; var addUrl = baseUrl + "/Inventory/repair/StockIn/addStockInAndDetails";
$.ajax({
type: 'POST',
url: addUrl,
dataType: 'json',
cache: false,
headers : {
'Content-Type' : 'application/json;charset=utf-8'
},
data: JSON.stringify(paramData),
success: function (data) {
if(data == "success"){
$('#addModal').modal('hide');
InitTable(url);
}else{
alert("添加失败");
}
},
error: function(er){
if(er.responseText == "success"){
$('#addModal').modal('hide');
InitTable(url);
}else{
alert("添加失败");
}
} }); });
原因:
@RequestParam 底层是通过request.getParameter方式获得参数的,也就是说,@RequestParam 和request.getParameter是同一回事。
因为使用request.getParameter()方式获取参数,可以处理get 方式中queryString的值,也可以处理post方式中 body data的值,所以,@RequestParam可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。
@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST。
@RequestBody接受的是一个json对象的字符串,而不是Json对象,在ajax请求时往往都是Json对象,用JSON.stringify(data)的方式就能将对象变成json字符串。
@RequestBody接收的是一个字符串,返回的参数可以是一个Map对象。
SpringBoot 传入JSON对象参数的更多相关文章
- ajax 传递JSON对象参数
https://msdn.microsoft.com/zh-cn/library/cc836466(v=vs.94).aspx https://msdn.microsoft.com/zh-cn/lib ...
- JAVA之等号、传类对象参数与c++的区别
在JAVA中用等号对类对象进行赋值,实际上操作的是对象的地址. eg: package MyText; class ClassA { int value; public void seta(int v ...
- VB 老旧版本维护系列---尴尬的webapi访问返回json对象
尴尬的webapi访问返回json对象 首先Imports Newtonsoft.Json Imports MSXML2(Interop.MSXML2.dll) Dim URLEncode As Sy ...
- spring MVC 如何接收前台传入的JSON对象数组并处理
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
- spring MVC 如何接收前台传入的JSON对象数组
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
- vue axios get请求参数为json对象 而非字符串形式
axios get请求方式 传递给后台的参数都是字符串下形式,无法传递json对象 或数组对象等 post请求方式则可以实现, 但若后台接口要求必须用get方式传递对象给后台,需要装插件,实 ...
- SpringBoot之封装json对象返回json数据
/** * @description:封装json对象,所有返回结果都使用它 **/ public class Result<T> { private int code;// 业务自定义状 ...
- springboot之json传参(后台控制层如何接收和解析参数)
一般web端都是用form标签的形式进行表单提交到后台,后台控制层再用相应的实体对象去接收前端传来的json参数. 但是有时候前端界面很复杂,要传入后端的参数是各种标签里面的value值,这些值又是来 ...
- spring接收json格式的多个对象参数(变通法)
两种方法 方法1 如果使用spring mvc同客户端通信,完全使用json数据格式,需要如下定义一个RequestMapping @Controller public class TestContr ...
随机推荐
- 个人收集的Android开源项目
1. KnowWeather 下载:GitHub 一款 Android 开源天气 App ,包含天气信息.详情.生活指数等,通知栏,桌面小部件,定时更新天气等等,应用没有任何广告,支持县级.区级城市的 ...
- CMake版本低,需要更高版本.
https://blog.csdn.net/qq_34935373/article/details/90266958 使用cmake命令安装Opencv软件时,报如下错误: CMake Error a ...
- mp4文件转码为m3u8
https://bbs.csdn.net/topics/392046401 *********************************************** 转码完成,我直接播放m3u8 ...
- 【转】Redis哨兵(Sentinel)模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...
- git清除master分支所有commit
原理:新切一个分支并切换到这个分支,删除原来的master分支,再将新分支变成master 步骤: 1. 创建并切换到新分支 git checkout --orphan latest_branch 2 ...
- Python Linux系统管理与自动化运维
Python Linux系统管理与自动化运维 前言 第1章Python语言与Linux系统管理1 1.1Python语言有多流行1 1.2Python语言为什么流行3 1.3Python语言有什么缺点 ...
- ThinkPHP5远程代码执行高危漏洞(附:升级修复解决方法)
漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell. 漏洞评级 严重 影响版本 ThinkPHP 5 ...
- Django框架 + Djiango安装 + First Djiango + 常用命令
一.Django框架 MVC框架和MTV框架 参考:https://www.cnblogs.com/taosiyu/p/11260016.html MVC,全名是Model View Controll ...
- 部署TiDB集群
架构图 节点规划 120.52.146.213 Control Machine 120.52.146.214 PD1_TiDB1 120.52.146.215 PD2_TiDB2 120.52.146 ...
- 【Maven学习】定制库到Maven本地资源库
目标:手工操作将一个jar安装到本地仓库 第一步:首先获取到jar包,可以是第三方的 也可以是自己创建的,放到本地任意目录 比如:joda-time-2.10.3,放到C:\jar\ 目录下面 第二 ...