반응형
프론트에서 백으로 데이터를 보낼 때
생산성을 이유로든, 너무 일회성이라 DTO를 만들기 애매할 때든, 어떤 이유가 되었던 간에
JAVA bean DTO를 만들지 않고
Map<String,Object> 맵 형식으로 키, 밸류를 받아 사용할 때가 있다.
그런데 Map형식으로 받은 데이터를 키값을 이용해 사용하려고 할 때
정수형 int를 선언해서 쓰려고 하면 에러가 발생한다.
java.math.BigInteger cannot be cast to java.lang.Integer
Map에서 정수를 꺼낼 때 BigInteger로 꺼내기 때문인데
추측하기로는 map에 들어오는 데이터가 long보다 큰 수일 수도 있으니 제한이 없는 BigInteger로 꺼내는 게 아닐까...추측해본다.
이 에러는 스프링에서는 두가지로 해결 할 수 있는데...
위에서 썼듯 받을 때 이미 받을 형이 선언되어있는 DTO를 만들어서 받거나
Map에서 바로 int로 형변환 하지 않고 String.valueOf를 거쳐서 형변환 하면 정수형으로 사용할 수 있다.
int i = Integer.parseInt(String.valueOf(map.get("키 값")))
반응형
'JAVA > Spring' 카테고리의 다른 글
Spring Security authorizeRequests() 폐기에 따른 대안.. (0) | 2023.05.19 |
---|---|
WebClient를 이용한 API 호출과 그 리턴 값 다루기(JSON) (2) | 2022.08.03 |
[MyBatis] 방금 insert한 테이블의 Auto Increasement 값 가져오기 (0) | 2022.06.29 |
스프링 비밀번호 암호화/복호화? (0) | 2022.06.06 |
DTO는 무수히 만들어질 수 있다. (0) | 2022.04.22 |
Comment