前端传递JSON数组数据到后端(解析方法)
在前端和后端之间传递数组时,由于HTTP协议的限制,无法直接传递数组类型的参数。 请求参数需要被转换为字符串格式传递给后端,所以需要通过 JSON.stringify() 方法将 gradeIdArray 数组转换为一个 JSON 字符串,并将其作为参数传递给后端。
add(){ // 将选中的权限等级的 ID 转换为整数类型,并存储在一个数组中 let gradeIdArray = [] for (let i = 0; i < this.selectGradeArray.length; i++) { gradeIdArray.push(parseInt(this.selectGradeArray[i])) } // 发送 POST 请求,将角色名称和权限等级的 ID 数组传递给后台 axios.post(/project/role/add, { roleName: this.addObj.name, gradeIdArray: JSON.stringify(gradeIdArray) }).then(resp => { if (resp.data === ok) { alert(添加成功) // 清空 this.addObj.name = this.selectGradeArray = [] } else { alert(添加失败) } }); }
在后端的控制器方法中,需要使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并将其转换成对应的 Java 对象
@PostMapping("add") public String add(@RequestBody Map<String, Object> params) { String roleName = (String) params.get("roleName"); String gradeIdArrayJson = (String) params.get("gradeIdArray"); ObjectMapper mapper = new ObjectMapper(); List<Integer> gradeIdList = null; try { gradeIdList = mapper.readValue(gradeIdArrayJson, new TypeReference<List<Integer>>() {}); } catch (JsonProcessingException e) { e.printStackTrace(); } roleService.add(roleName, gradeIdList.toArray(new Integer[0])); return "ok"; }
使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并使用 Jackson 库中的 ObjectMapper 对象将其转换成一个 List<Integer> 对象。
在转换过程中,使用 TypeReference类来指定转换的目标类型为 List<Integer>。
然后,再将转换后的 List<Integer> 对象转换成一个 Integer 数组,并将其传递给 roleService.add() 方法进行处理。
下一篇:
我的IDEA出现了no usages