본문 바로가기
Backend/Java

[JAVA]Map에서 key값이 소문자로 변환되어 들어가는 현상과 해결

by kkaboo 2024. 1. 11.
728x90

 

🔍 Map에서 key값이 소문자로 변환되어 들어가는 현상

쿼리로 던져줄 Map에 put을 하는데 카멜표기법으로 넣은 key값이 자꾸 소문자로 변환이 되었다.

파라메터를 받을 쿼리

 

Map에 put한 값

 

소문자로 들어가는 key값 ㅠㅠ

 

파라메터에 들어간 NULL

 

쿼리 파라메터에는 당연히 NULL이 들어갔고 원하는 데이터를 얻지 못했다.

 

 

💡 첫번째 해결 방법

map.put("$USER_LANG_TYPE", userLangType)

 

위와 같이 대문자에 언더바로 키값을 변경해주었더니 카멜표기법으로 데이터가 잘 들어갔다.

콘솔에 찍힌 쿼리에도 파라메터가 잘 들어갔다 ㅎㅎ

 

💡 두번째 해결 방법

데이터는 잘 나왔지만 다른 방법이 있지않을까 하는 마음에 회사 선배에게 여쭤봤다.

 

컬렉션을 사용하면서 키값 앞에 달러기호($)를 쓰는 경우에는 해당 버그가 발생할 수도 있다고 했다.

확실한 원인은 안바쁘실 때 각잡고 물어봐야겠다🤤

 

Map sendParamMap = new HashMap();
.
.
.
sendParamMap.clear();
sendParamMap.putAll(mapUtil.copyMap(confirmMap));
sendParamMap.put("$userLangType", userLangType);

 

새로운 Map에 putAll()을 사용해 원하는 map을 복사해 넣고 보내면 키값이 그대로 유지되면서 보내진다고 한다.

(나는 기존에 파라메터를 보낼 때 사용하던 Map을 clear() 한 후 복사해줬다.)

 

잘 들어간다!!

728x90