📌 오류 내용
java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class org.json.simple.JSONObject (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; org.json.simple.JSONObject is in unnamed module of loader 'app')
Object를 바로 JSONObject로 변경하려고 하니 위와 같은 오류가 났다.
RequestEntity<Map<String, String>> requestEntity = RequestEntity
.post(url)
.contentType(MediaType.APPLICATION_JSON)
.body(req);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<JSONObject> response = restTemplate.exchange(requestEntity, JSONObject.class);
// 여기서부터 오류
JSONObject jsonObject = (JSONObject) response.get("response");
System.out.println(jsonObject.get("status"));
JSONParser jsonParser = new JSONParser();
ObjectMapper mapper = new ObjectMapper();
try {
String jsonStr = mapper.writeValueAsString(response.getBody().get("response"));
JSONObject jsonObject = (JSONObject) jsonParser.parse(jsonStr);
System.out.println(jsonObject.get("status"));
} catch (Exception e) {
e.printStackTrace();
}
JSONObject로 변환하기 위해서는 {"response": {"status": "fail"} 이런식으로 쌍따옴표가 있어야하는데 Object에서는 쌍따옴표가 빠진 상태로 {status=fail} 이렇게 리턴을 하기 때문에 JSONObject로 변환할 수 없었다. ObjectMapper와 JSONParser를 이용하여 쌍따옴표를 만들어주고 json으로 변환하여 JSONObject로 만들었다.