之前有个需求,需要从前端向后台传递一个对象,该对象里不仅含有属性,还包含了一个数组
类似对象:
Object:{属性1:'',属性2:'',...,children:[{属性3:''},{},...]}
这样的一个对象。后台使用一个一对多的实体类进行接收,但报错。(前端使用的是es6,后台使用springboot)
类似实体类:
public class Xxx1 {
private String 属性1;
private String 属性2;
...
private List<Xxx2> children;
}
百度了很多种方法:使用@RequestBody、@RequestParam、设置contentType等方法都不行。
最后使用转换JSON的方法实现了参数的传递。
具体做法:
前端:
使用JSON.stringify()方法将其转换为JSON字符串
url: url,
data: { jsonStr: JSON.stringify(Object), },
最后得到的数据类似于:
{'属性1':'','属性2':'',...,'children':[{'属性3':''},{''},...]}
后端:
controller方法:
@PostMapping(value = 'url',produces = "application/json")
public void upsertXxx(String jsonStr) {
// 这里使用的alibaba的fastjson包
// 先将字符串转换为JSON对象
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
// 使用toJavaObject()方法将其转换为Xxx对象
// Xxx对象中的list集合也会得到相应的值
Xxx xxx= jsonObj.toJavaObject(Xxx.class);
...
// 业务实现
...
}