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. 基于springboot+jquery+H5的文件(并发+断点+分片)的上传方案

    1.支持文件分片断点续传 2.支持已上传文件再次上传时秒传 3.多个人对同一个文件同时上传可以多线程并发协调上传,加快超大文件的上传速度. 技术点:springboot + webflux + red ...

  2. Spring @RequestMapping 参数说明

    @RequestMapping 参数说明: value:  指定请求的实际地址, 比如 /action/info之类.method:  指定请求的method类型, GET.POST.PUT.DELE ...

  3. 研发团队是该制定OKR还是KPI?

    绩效管理和OKR的目标管理,是前行的两条腿,缺谁都会寸步难行.正确的做法是把企业的使命和任务,转化为经营目标,然后再用KPI.OKR等绩效管理工具,分解.执行.考核.. KPI是一套绩效管理的方法.全 ...

  4. OpenStack(一)——OpenStack的相关概念

    (1).OpenStack概述 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是 ...

  5. ubantu系统安装ssh

    ssh连接ubantu系统 描述:新安装的ubantu系统,ssh连接发现22端口拒绝,登陆服务器发现没有ssh 1.安装ssh服务 apt-get install openssh-server 报错 ...

  6. Mac多SSH Key配置

    多SSH key配置 工作的时候碰到SSH配置的问题,就是公司用的是gittea的仓库,而本人的github平常也要使用,这个时候就需要配置不同的SSH key了.将同一个公钥分配配置给github和 ...

  7. JS核心系列:原型对象

    在JS中,每当创建一个函数对象f1 时,该对象中都会内置一些属性,其中包括prototype和proto, prototype即原型对象. 每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象 ...

  8. 引用类型前需要加ref?

    方法的参数前加ref代表的是传的参数的地址,值类型前加ref的作用相当于把这个值类型当成引用类型在用,那引用类型作为参数有一种情况也需要加ref,不然得到的值会有差. 不加ref: class Pro ...

  9. PHP设计模式 - 状态模式

    状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以 ...

  10. Java byte和hex十六进制字符串转换

    在Java中字符串由字符char组成, 一个char由两个byte组成, 而一个byte由八个bit组成, 一个十六进制字符(0-F)实际上由4个字节byte即可表达, 因此, 从字节数组到十六进制字 ...