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对象参数的更多相关文章

  1. ajax 传递JSON对象参数

    https://msdn.microsoft.com/zh-cn/library/cc836466(v=vs.94).aspx https://msdn.microsoft.com/zh-cn/lib ...

  2. JAVA之等号、传类对象参数与c++的区别

    在JAVA中用等号对类对象进行赋值,实际上操作的是对象的地址. eg: package MyText; class ClassA { int value; public void seta(int v ...

  3. VB 老旧版本维护系列---尴尬的webapi访问返回json对象

    尴尬的webapi访问返回json对象 首先Imports Newtonsoft.Json Imports MSXML2(Interop.MSXML2.dll) Dim URLEncode As Sy ...

  4. spring MVC 如何接收前台传入的JSON对象数组并处理

    spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...

  5. spring MVC 如何接收前台传入的JSON对象数组

    spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...

  6. vue axios get请求参数为json对象 而非字符串形式

    axios get请求方式 传递给后台的参数都是字符串下形式,无法传递json对象 或数组对象等    post请求方式则可以实现,   但若后台接口要求必须用get方式传递对象给后台,需要装插件,实 ...

  7. SpringBoot之封装json对象返回json数据

    /** * @description:封装json对象,所有返回结果都使用它 **/ public class Result<T> { private int code;// 业务自定义状 ...

  8. springboot之json传参(后台控制层如何接收和解析参数)

    一般web端都是用form标签的形式进行表单提交到后台,后台控制层再用相应的实体对象去接收前端传来的json参数. 但是有时候前端界面很复杂,要传入后端的参数是各种标签里面的value值,这些值又是来 ...

  9. spring接收json格式的多个对象参数(变通法)

    两种方法 方法1 如果使用spring mvc同客户端通信,完全使用json数据格式,需要如下定义一个RequestMapping @Controller public class TestContr ...

随机推荐

  1. groupby 的妙用(注意size和count)

    Pandas的groupby()功能很强大,用好了可以方便的解决很多问题,在数据处理以及日常工作中经常能施展拳脚. 今天,我们一起来领略下groupby()的魅力吧. 首先,引入相关package: ...

  2. 第一节:Python+Selenium环境搭建

    一.selenium工作原理 二.安装python Window系统下,python的安装很简单.访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下 ...

  3. IDEA光标类的操作

    1.Ctrl+Alt+Left/Right   光标定位到上一个/下一个浏览位置处: 2.Ctrl+Shift+Backspace   光标定位到上次修改的地方: 3.Alt+Up/Down   移动 ...

  4. mysq5.7 主主同步

    db01  172.21.0.10 db02  172.21.0.14 一.安装数据库看上一遍博客 修改配置文件  db01  172.21.0.10 [root@VM_0_10_centos mys ...

  5. Node 脚本的调试工具

    2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使得 Node 脚本也可以使用图形界面调试 1.准备 创建目录 D:\nodejs>mk ...

  6. hive 集群搭建

    软件环境:centos7 + hadoop2.7.6 1.hive 下载 apache-hive-2.1.0-bin.tar.gz 2.copy  apache-hive-2.1.0-bin.tar. ...

  7. [xsy3132]数表

    题意:一个$n\times m$的数表,数值$\in[0,4)$,你可以任意次选择一行或一列$+1,\text{mod }4$,要最小化所有数的和 因为$n\leq10$,所以数表可以看成$m$个$n ...

  8. 写代码如何合理使用和优化我们的机器资源(CPU、内存、网络、磁盘)

    写代码脑子一定要绷紧一根弦,认知到我们所在的机器资源是有限的.机器资源有哪些?CPU.内存.网络.磁盘等,如果不做好保护控制工作,一旦某一资源满负荷,很容易导致出现线上问题. 1 CPU 资源怎么限制 ...

  9. 【sqlserver】【mysql】用NavicatPremium12把sqlserver的数据迁移到mysql上

    1.在NavicatPremium的mysql,选择到迁移到的表,然后右键[导入向导]

  10. Linux下 Nginx安装与配置(Centos7)

    1:下载解压 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx-1.14.0.tar.gz cd ng ...