Java后台接收前端传递的数组对象参数的处理

之前有个需求,需要从前端向后台传递一个对象,该对象里不仅含有属性,还包含了一个数组
类似对象:

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);
	...
	// 业务实现
	...
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值