조이 생각

반응형

이번 포스팅은 json-simple 라이브러를 사용하여 제이슨 파일을 파싱하는 예제를 다뤄보려고 합니다.

▼▼▼ json-simple 라이브러리 적용하는 방법 ▼▼▼

https://joytk.tistory.com/68

 

이클립스 제이슨 파싱 json-simple 라이브러리 설치방법 (자바 jar 파일 적용 방법)

이클립스에서 원하는 라이브러리를 추가하는 방법을 알아보려고 합니다. json-simple을 사용하기 위한 라이브러리 추가 방법을 예로 다른 라이브러리도 이와 마찬가지로 추가할 수 있기에 참고가

joytk.tistory.com


1. Key, Value set으로 파싱하는 방법

보통 key가 정의되어 저장된 json을 key 값으로 읽어오는 경우가 많은데,

간혹가다가 key에 대한 정보가 없고 key도 랜덤성 데이터로 저장된 json인 경우 

읽어올 때, key-value 세트로 읽어오는 방법을 사용하면 좋지 않을까 생각된다.

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;
import java.util.Map;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class ParsingMain {

	public static void main(String[] args) {
		JSONParser parser = new JSONParser();
		String fileName = "C:/data/test/22-14.json"; // 읽어 오려는 json 파일 경로
		System.out.println("- read file => " + fileName);
		
		try(Reader reader = new FileReader(fileName)) {
			
			JSONObject jsonObject  = (JSONObject) parser.parse(reader);
			int objSize = jsonObject.size();
			System.out.println("- object size => " + objSize);
			
			Iterator iter = jsonObject.entrySet().iterator();
			while(iter.hasNext()) {
				Map.Entry<String, String> entry = (Map.Entry<String, String>) iter.next();
				System.out.println(entry.getKey() + " => " + entry.getValue());
			}
			
		} catch(IOException e) {
			e.printStackTrace();
		} catch(ParseException e) {
			e.printStackTrace();
		}
	}
}

 

2. Key set을 가져와 파싱하는 방법

1번과 마찬가지로 정해진 key 값이 없거나

정해진 key값은 있고 순서도 정해져있지만, 인간의 오류를 최소화 하기 위해 

json에 저장된 key를 읽어들여 값을 가져오면 좋지 않을까 생각된다.

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Iterator;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class ParsingMain {

	public static void main(String[] args) {
		JSONParser parser = new JSONParser();
		String fileName = "C:/data/test/22-14.json";
		System.out.println("- read file => " + fileName);
		
		try(Reader reader = new FileReader(fileName)) {
			
			JSONObject jsonObject  = (JSONObject) parser.parse(reader);
			int objSize = jsonObject.size();
			System.out.println("- object size => " + objSize);
			
			String key = "";
			String val = "";
			Iterator<String> keys = jsonObject.keySet().iterator();
			for(int i=0; i < objSize; i++) {
				key = keys.next();
				val = (String) jsonObject.get(key);
				
				System.out.println(key + " => " + val);
			}
			
		} catch(IOException e) {
			e.printStackTrace();
		} catch(ParseException e) {
			e.printStackTrace();
		}
	}
}

 

3. 특정 key를 가져와 파싱하는 방법

제이슨 파싱 예제를 검색하면 가장 많이 보이는 방법으로

가져올 key를 명확히 알고 있는 경우 일반적으로 사용하는 방법인 것 같다.

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class ParsingMain {

	public static void main(String[] args) {
		JSONParser parser = new JSONParser();
		String fileName = "C:/test/data/aaa.json";
		System.out.println("- read file => " + fileName);
		
		try(Reader reader = new FileReader(fileName)) {
			
			JSONObject jsonObject  = (JSONObject) parser.parse(reader);
			int objSize = jsonObject.size();
			System.out.println("- object size => " + objSize);
			
			String name = (String) jsonObject.get("name");
			String age = (String) jsonObject.get("age");
			String address = (String) jsonObject.get("address");
			
			System.out.println("---- 파싱 결과 ----");
			System.out.println("- name => " + name);
			System.out.println("- age => " + age);
			System.out.println("- address => " + address);
			
		} catch(IOException e) {
			e.printStackTrace();
		} catch(ParseException e) {
			e.printStackTrace();
		}
	}
}

[aaa.json]

 

[출력 결과]

 

 

도움이 되셨다면 하트 클릭과

궁금하신점 또는 개선사항이 있다면 댓글 부탁드립니다.

 

감사합니다. :) 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading