java.util.ArrayList<>` from Object value (token `JsonToken.START_OBJECT`)

hanana·2023년 12월 6일

요약

List객체를 서버로 전달할 땐
괜히 JSON형태로 형태로 만들지 말자

엑셀업로드 기능을 구현하는 중 발생한 이슈였다.

// 생략
api.post(
  url,
  {reqBody : data.map(mapExcelRowToCustomerReg)}
).then
// 생략

대충 엑셀파일을 읽어서
{Key : "value",Key : "value"} 형식의 데이터를 List로 만들어서 전달하는 코드이다.

분명 요청의 페이로드에 데이터가 예쁘게 들어가 있는 모습을 확인하였는데

서버단에서는 원하는 dto형태로 받을 수가 없었다.

@PostMapping("/item")
public String excelPackageItem(@RequestBody List<DTO> dtos)  {
    return service.excelReg(dtos);
}

클라이언트 쪽에서 데이터를 제대로 전달하지 않았던 문제였다.

전달하려는 데이터를 아래처럼 바꾸니 정상적으로 진행되었다.

api.post(
  url,
  reqBody : data.map(mapExcelRowToCustomerReg)
).then
//생략

클라이언트는 { "key" : [Array] } 라는 JSON 형태로 데이터를 보냈고
서버에서는 List<Dto> 형태로 값을 받으려고 하니 데이터 형이 불일치해서 발생한 문제였다.

profile
성숙해지려고 노력하지 않으면 성숙하기까지 매우 많은 시간이 걸린다.

0개의 댓글