前端传递JSON数组数据到后端(解析方法)

您所在的位置:网站首页 java怎么将字符串转为数字形式 前端传递JSON数组数据到后端(解析方法)

前端传递JSON数组数据到后端(解析方法)

2023-06-02 21:29| 来源: 网络整理| 查看: 265

        在前端和后端之间传递数组时,由于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 params) { String roleName = (String) params.get("roleName"); String gradeIdArrayJson = (String) params.get("gradeIdArray"); ObjectMapper mapper = new ObjectMapper(); List gradeIdList = null; try { gradeIdList = mapper.readValue(gradeIdArrayJson, new TypeReference() {}); } catch (JsonProcessingException e) { e.printStackTrace(); } roleService.add(roleName, gradeIdList.toArray(new Integer[0])); return "ok"; }

        使用 @RequestBody 注解来接收前端传递过来的 JSON 数据,并使用 Jackson 库中的 ObjectMapper 对象将其转换成一个 List 对象。

        在转换过程中,使用 TypeReference类来指定转换的目标类型为 List。

        然后,再将转换后的 List 对象转换成一个 Integer 数组,并将其传递给 roleService.add() 方法进行处理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3