반응형
Gson casting 오류
gson 을 사용하다 보면
__com.google.gson.internal.LinkedTreeMap cannot be cast to my class__
이런 오류가 나는데, casting 을 사용하려고 하면 나는 오류다.
Gson gson = new Gson();
list = gson.fromJson(jsonString, new TypeToken<List<T>>(){}.getType());
jsonString list 로 fromJson 하는 경우에 생기는 오류이다.
결론은 아래 메소드로 다시 json 변환 후 object 로 변환 하던지, 아니면 gson 파싱 객체를 casting하지 않도록 만들어야 한다.
//array 를 json String 으로 변환
public static <T> String arrayToString(ArrayList<T> list) {
Gson g = new Gson();
return g.toJson(list);
}
// json String 을 list Object 로 변환
public static <T> List<T> stringToArray(String s, Class<T[]> clazz) {
T[] arr = new Gson().fromJson(s, clazz);
return Arrays.asList(arr); //or return Arrays.asList(new Gson().fromJson(s, clazz)); for a one-liner
}
참고문헌
https://stackoverflow.com/questions/27253555/com-google-gson-internal-linkedtreemap-cannot-be-cast-to-my-class
www.programmersought.com/article/46923204627/
반응형
'Java > Java Library' 카테고리의 다른 글
[Java] 자바 문자열로 된 수식 계산하기 - 스크립트 엔진 (0) | 2021.02.09 |
---|---|
[Gson] gson deserialize 파싱사용 이유 및 방법 (0) | 2021.02.01 |
sftp java 접속 라이브러리 jsch (0) | 2021.01.27 |
[okhttp3] okhttp IOException: unexpected end of stream on Address (0) | 2020.12.17 |
[JAVA] Date 및 LocalDateTime 을 Json String으로 변환시 주의(Gson 및 Jackson) (0) | 2020.10.25 |