フロントエンドがJSON配列データをバックエンドに渡す(解析メソッド)

        フロントエンドとバックエンドの間で配列を渡す場合、HTTP プロトコルの制限により、配列型のパラメーターを直接渡すことはできません。
リクエスト パラメーターは文字列形式に変換してバックエンドに渡す必要があるため、gradeIdArray 配列を JSON.stringify() メソッドを通じて 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() メソッドに渡します。

おすすめ

転載: blog.csdn.net/m0_74421344/article/details/130919730