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 ...
随机推荐
- 2019t1_sumdoc_list.txt aa.docx acc baidu v2 sbb.docx Acc jindon v2 sbb.docx assetsList.html Atiitt 日本刑法典读后笔记.docx Atiti 遇到说花心的时候赞美应对.docx Atitit lesson.docx Atitit malye主义、mzd思想和dsp理论的区别和联系.docx Ati
2019t1_sumdoc_list.txtaa.docxacc baidu v2 sbb.docxAcc jindon v2 sbb.docxassetsList.htmlAtiitt 日本刑法典读 ...
- 端口镜像——配置原理篇
镜像是指将经过指定端口(镜像端口)或者指定VLAN(镜像VLAN)的报文复制一份到另一个指定端口(观察端口),然后转发到网络监控设备,供网络管理员进行网络监控与故障管理. 看官们可以通过下面的这张图了 ...
- Annotation-based argument resolution 部分2
HandlerMethodArgumentResolver的抽象實現AbstractNamedValueMethodArgumentResolver下的子类 部分1 RequestParamMapM ...
- java多线程(三)线程的安全问题
1.1. 什么是线程安全 如果有多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的:反之,则是线程不 ...
- Anaconda(一)
一.Anaconda下载安装 Anaconda + Pycharm是知乎大佬们推荐的Python标配, Anaconda有众多版本,截至2019年11月的最新版Anaconda内置的是Python3. ...
- WMS日常运维_WJC
3.25.奥克斯项目Apache的server reached MaxClients setting问题 apachelog报错:[mpm_worker:error] [pid 2486:tid 14 ...
- 配置cisco设备记录用户命令
R1(config)# aaa new-model R1(config)# aaa accounting commands 0 default start-stop group local R1(co ...
- 【python基础】easydict的安装与使用
前言 easydict允许以属性的方式访问dict类型,且可以递归地访问,使用起来比较方便. 安装 pip install easydict 使用 参考 1. easydict; 完
- Java 8并行流的性能陷阱
并行化流被分成多个块,每个块独立处理,结果在最后汇总. CPU密集型代码如下: private long countPrimes(int max) { return range(1, max) ...
- Laravel实现from的curl文件转发
文件的使用curl分发时发现不能直接将其传入curl,需要使用CURLFile()来实现 分发类 <?php /** * 请求转发控制器 * Created by PhpStorm. * Use ...