JSON 파일(데이터) 읽기/파싱 (json.simple.JSONParser)
2023. 3. 2. 16:05ㆍJAVA
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 하다보면 원하는 값을 얻을 수 있다.
'JAVA' 카테고리의 다른 글
[JAVA] 게시판 등에 자주 사용되는 "몇 분전, 몇 시간전, 2일전" 이런 표현 나타내기 (0) | 2023.05.02 |
---|---|
[JAVA] HashMap 구현 - Hash 값으로 index 만들어서 검색 효율 높이기 (0) | 2023.04.20 |
JSON 파일로 저장 (json.simple.[JSONObject/JSONArray] ) (0) | 2023.03.02 |
예외 (Exception) 간단 정리 (0) | 2023.01.29 |