일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Intellij
- 스프링 에러
- Spring boot
- 전자정부프레임워크
- spring boot rest api
- 스프링
- 디자인 패턴
- egov
- 자바스크립트 class
- Spring
- 전자정부 샘플
- javascript class
- spring boot error
- exceptiontransfer
- spring 설정 파일
- javascript 클래스
- 메이븐
- 인텔리제이
- pom.xml
- 자바스크립트
- Oracle
- spring 에러
- 스프링부트 post api
- spring boot post api
- 오라클
- REST API
- spring boot CRUD
- javascript
- 자바스크립트 클래스
- Spring REST API
- Today
- Total
빵구의 개발 메꾸기
Expected a string but was BEGIN_ARRAY 에러 해결 본문
Java 파일에서 gson 라이브러리를 사용하던 중 다음과 같은 에러가 발생했다.
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 47 path $.
오류 발생 과정과 해결 방법을 알아보자.
<오류 발생 과정>
① User Object와 Animal Object를 여러개 만들고 property들에 대해 set한 뒤 User Object의 animals property에
넣어준다.
② User 객체를 String 형태의 JSON으로 변환해준다.
③ 변환 된 User 객체 데이터가 담긴 String 형태의 JSON을 Map으로 변환해준다.
④ User 객체를 String 형태의 JSON으로 변환한 것은 console에 잘 출력이 되었으나 String 형태의 JSON을 Map으로
변환한 부분은 에러가 발생했다.
Expected a string but was BEGIN_ARRAY 에러에 대해 해석해보면 문자열을 기대했지만 배열이 들어있다는
내용이다.
현재 Map으로 변환 시킬 때 Map의 generic을 보면 Map<String, String>이다.
<해결 방법>
① User Object와 Animal Object를 여러개 만들고 property들에 대해 set한 뒤 User Object의 animals property에
넣어준다.
② User 객체를 String 형태의 JSON으로 변환해준다.
③ 변환 된 User 객체 데이터가 담긴 String 형태의 JSON을 Map으로 변환해준다.
④ 아까와는 달리 정상적으로 에러없이 console에 잘 출력된 것을 볼 수 있다.
user에 animals 배열 데이터가 담겨있기 때문에 map으로 변환시킬 때 generic을 Map<String, String>으로 하면
에러가 발생한다.
따라서 Map<String, Object>로 해주면 에러가 해결된다.
'BACK-END > JAVA' 카테고리의 다른 글
Gson 라이브러리 활용 (0) | 2022.05.30 |
---|---|
HttpURLConnection 활용 (0) | 2022.05.26 |
JAVA 쿠키(Cookie) 등록, 조회, 수정, 삭제 활용 (0) | 2022.05.23 |
Jackson 라이브러리 ObjectMapper 활용 (0) | 2022.05.20 |
slf4j VS log4j VS logback VS log4j2 (0) | 2022.05.02 |