개요
- api로 받아온 String값을 구분자(,(쉼표))로 split하여 배열에 담아 작업을 하는 도중 예상하지 못한 값을 반환하는 것을 발견
- 다신 같은 실수를 하지 않기 위해 포스팅,,,
코드 예시
String resultStr = apiObj.get("rel_list");
// -> 받아오는 값 예시 "1-1, 1-2, 1-3"
String[] resultArr = resultStr.split(",");
// -> ["1-1", "1-2", "1-3"]
// 그리고 문제가 되었던 부분...
int arrLength = resultArr.length;
for(int i = 0; i<arrLength; i++){
//처리~
testVO.setRelList(resultArr[i]);
}
- 이게 왜 문제가 되느냐?!
- 바로바로, 값을 못 받아왔을 때 문제가 된다!
- 원래라면 "1-1, 1-2, ..." 이렇게 값을 받아와야겠지만
- 값이 없을 때는 "" 이렇게 빈 String으로 값이 넘어온다고 가정했을때
String[] resultArr = resultStr.split(",");
이 코드의 실행값이 내 예상으로는 0
이었지만, 실제로는 1
이 잡히게 된다
아마도 .length
가 배열 크기(내용물이 있고 없고와는 상관없이) 를 체크하기 때문에 split
을 하면서 크기가 1인 배열을 반환하는 것 같다.
따라서, 조건문으로 받아온 값이 빈 String 값이 아닌지 체크해주는 로직을 추가해주어야 했다.if(!resultStr.equals("")) {~}
'java' 카테고리의 다른 글
[java] 예외(Exception) 발생시키기 (0) | 2023.11.22 |
---|---|
[java, 자료구조] 컬렉션 프레임워크 선택 기준 (0) | 2023.11.15 |
[java] 자료구조 Set, Iterator (0) | 2023.11.15 |
[java] 자료구조 List (0) | 2023.10.27 |
[JAVA, JSP] AJAX를 사용하여 JSON 데이터를 주고받기 (0) | 2023.10.19 |