项目中遇到一个问题,前端需要将一个对象数组传输到后台,经过查询资料,得到以下解决办法:
Ajax实现对象数组传参到后台,可借助JSON进行传输。
前端将对象数组转换成JSON字符串,后台再将JSON字符串转换成数组
前端:
let _list=new Array();
_list.push({"priv":"read","addRemove":readVal})
_list.push({"priv":"downloadFile","addRemove":downloadFileVal})
$.ajax({
url:"${ctx}/fileRole/undateRolePriv/${roleId}/"+directory,
data : {privList : JSON.stringify(_list)},
success:function (data) {
if (data.code=="Success"){
$.ligerDialog.success("操作成功")
}
},
error:function (data) {
console.log(data)
$.ligerDialog.open("授权失败,错误信息:"+data)
}
})
关键代码:
前端:JSON.stringify(_list) :将JS对象数组格式化成JSON字符串。
后端:
@RequestMapping("/undateRolePriv/{roleId}/{directoryId}")
@ResponseBody
@Transactional(readOnly = false)
public CommonResult undateRolePriv(@PathVariable("directoryId") Long directoryId,@PathVariable("roleId")Long roleId, String privList){
//使用Hutool工具包转换JSON
JSONArray jsonArray=JSONUtil.parseArray(privList);
List<GrantPrivResult> grantPrivResultList = jsonArray.toList(GrantPrivResult.class);
后端: JSONUtil.parseArray(privList) :将接收到的JSON字符串重新转换成对象数组
问题1:前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 "
https://www.cnblogs.com/buwuliao/p/8435529.html