< 게시글을 이해하기 위해 앞서 익혀놔야할 개념 >
아이들에게 설명하듯이 너무 잘 설명하셔서 링크 걸어두었습니다. 😀
📄 .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)
를 통해 배열 객체를 하나씩 가져오면 해결.