[Java] JSONObject 강제 형변환 시 ClassCastException 발생

Jinbro·2022년 7월 4일
0

Error Report

목록 보기
3/4

org.json.simple.JSONObject sample

import org.json.simple.JSONObject;

String resStr = {"dataBody":{"result_msg":"성공","result_cd":"0000"}};
// {"dataBody":{"result_msg":"성공","result_cd":"0000"}}

JSONObject resObj = JsonUtil.toObject(resStr, JSONObject.class); // ObjectMapper

ClassCastException 발생 코드

JSONObject dataBodyObj = (JSONObject) resObj.get("dataBody");
// java.util.LinkedHashMap cannot be cast to org.json.simple.JSONObject

왜 ClassCastException 발생했을까?

JsonUtil.toObject > ObjectMapper (Jackson) 가 JSON 을 역직렬화할 때
1. JSONObject 내에 어떤 자료형 요소가 있어야 하는지 알 수 없다.
2. 기본 자료형 은 LinkedHashMap.
=> ClassCastException 발생!

해결방안 : jackson에게 역직렬화할 자료형 명시

JSONObject dataBodyObj = JsonUtil.convertValue(resObj.get("dataBody"), JSONObject.class); // ObjectMapper
// {"result_msg":"성공","result_cd":"0000"}

참고

ClassCastException 발생 원인 및 해결방안

profile
자기 개발 기록 저장소

0개의 댓글