
< 게시글을 이해하기 위해 앞서 익혀놔야할 개념 >
아이들에게 설명하듯이 너무 잘 설명하셔서 링크 걸어두었습니다. 😀
📄 .Json 파일에 존재하는 데이터를 파싱하기 위해 데이터를 가져오는데 JSONArray와 JSONObject에 대한 오류가 발생.
가져오는데 값에 대해 타입 형태의 오류가 난 것으로 추측해보는 중
📄 face_info.json 라는 파일을 가져오기 위한 코드를 작성
Exception in thread "main" java.lang. ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in unnamed module of loader 'app')package com.company; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class Main { public static void main(String[] args) throws IOException, ParseException { // 우선 가져올 파일의 경로를 작성 String filePath = "[파일 경로]"; // 파싱을 위한 파싱 객체 선언 JSONParser parser = new JSONParser(); // 파일을 읽어오기 위한 Reader 객체 선언. Reader reader = new FileReader(filePath); // JSONArray를 이용해서 파일을 가져오면 출력 가능 (성공) JSONArray jsonArray = (JSONArray) parser.parse(reader); jsonArray.add(reader); // 가져온 파일을 파싱해서 Object 형식으로 저장. JSONObject jsonObject = (JSONObject) parser.parse(reader); // 가져온 Object 객체에서 해당 Value값을 .get([DB 컬럼명])을 이용하여 가져옴 int id = (int) jsonObject.get("id"); int [컬럼값을 담을 변수명] = (int)jsonObject.get("[DB컬럼값]"); System.out.println(id); System.out.println([컬럼값]); } }
JSONObject를 선언하여.put()으로 Map값을 직접 넣어 JSONObject의 .get()을 이용할 때 값이 나옴.JSONObject를 선언하여 Reader한 파일을 Parser할 때 문제가 나타남.parser값을 JSONObject가 아닌 일반 Object객체에 넣었을 때는 오류없이 출력 됨.JSONArray로는 출력 가능JSONObject로 📄.json 파일을 읽을 때 에러가 발생하는데, 갖고 있는 📄.json 파일이 잘못된건가..?String filePath = "[파일 경로]"; Reader reader = new FileReader(filePath); JSONParser parser = new JSONParser(); Object obj = parser.parse(reader); System.out.println(obj);
JSONArray로 파일을 JSONParser로 읽어 파싱하고
JSONObject에 .get(i)를 이용하여 getInt(), getString()으로 하나씩 키-값을 읽어옴.
JSONObject로 파싱해서 오류가 났던 것.
JSONObejct에서 JSONArray의 .get(index)를 통해 배열 객체를 하나씩 가져오면 해결.