JSON 파일(데이터) 읽기/파싱 (json.simple.JSONParser)

2023. 3. 2. 16:05JAVA

JSON 파일 읽기

JSONParser parser = new JSONParser();

Reader reader = new FileReader("제이슨 파일 경로명");

 

 

Object obj = parser.parse(Reader 이름);

우선 file을 Obejct객체로 받는다. 그리고 받은 객체의 형식에 따라 다음과 같이 나누어진다.

 

- JSONObject (JSON 객체 단건일 경우)

JSONObject jsonobj = (JSONObject)obj;

//jsonobj가 가지고 있는 각각 값들 빼내기
String name = (String)obj.get("name");
int age = (int)obj.get("age");
String hobby = (String)obj.get("hobby")

jsonobj가 가지고 있는 값의 타입에 맞춰서 형변환과 함께 저장해준다.

 

 

- JSONArray(JSON 객체가 여러개일 경우)

//Object로 받은 객체를 JSONArray로

JSONArray jsonArr = (JSONArray) obj;

// 일일이 꺼내서 JSONObject로 사용
if(jsonArr.size() > 0 ) {
	for(int i=0; i<jsonArr.size(); i++){
    	JSONObject jsonObj = (JSONObejct)jsonArr.get(i);
    }
}

 이후엔 JSONObejct와 같음.

 

- JSON 내부에 JSON

{"name":"재준", "age":27, "hobby" :
	{"first" : "exercise", "second" : "sleep", "third" : "study"} - hobbyJson
}
//다음과 같이 json의 멤버중 하나가 json을 값으로 가지고 있을 경우

똑같다.
// 우선 위의 모든 값을 담은 obj를 JSONObejct(JSONArray)로 받아준다.
JSONObject jsonObj = (JSONObject)obj;

// json을 값으로 가진 멤버를 꺼내준다. (JSONObejct일수도 JSONArray일수도 있음)
JSONObject hobbyJson = (JSONObject)jsonObj.get("hobby");

// hobbyJson 사용 가능
hobbyJson.get("first");
hobbyJson.get("second");
hobbyJson.get("third");

JSONObject의 멤버중 JSONObject가 있을 수도 있고, JSONArray가 있을 수도 있다. 방법은 똑같다.

해당 타입에 따라서 형변환을 통해 값을 받아주고 또 다시 작은 단위로 cast 하다보면 원하는 값을 얻을 수 있다.