본문 바로가기
BOOKS/JSP

JSON.simple 라이브러리를 사용한 JSON 처리하기

by IT여행자 2021. 5. 16.
728x90

안녕하세요 IT여행자입니다.

 

데이터를 구조화 시키기 위해 xml 형식을 사용했었지만, 이제는 JSON 형식으로 처리하는것이 일반화 된것 같습니다. 이번 포스팅은 JSON.simple 라이브러리를 사용하여 JSON형태의 자료를 Java Object로, Java Object를 JSON 형태로 변환하여 사용하는 방법입니다.

 

테스트 환경은 eclipse와 Java를 사용하여 테스트해 보겠습니다.

 

[목차]

라이브러리 설치 및 JSON문자열을 JSONObject로 변환

JSON문자열을 Java Object로 변환

JSONObject를 JSON 문자열로 변환

 

라이브러리 설치

다양한 방법으로 라이브러리를 설치할 수 있지만 본 포스팅에서는 mvnrepository.com  사이트를 통해 라이브러리를 설치해 보도록 하겠습니다.

 

http://mvnrepositon.com 사이트를 방문하여 json simple로 검색하면 아래와 같은 링크가 보입니다.

 

 

해당 링크를 클릭하여 라이브러리를 다운로드 받아 이클립스 프로젝트 안에  WEB-INF/lib 폴더를 생성한 후  복사해 둡니다.

 

복사된 라이브러리를 인식하지 못할 경우 강제로 라이브러리를 인식시켜 주어야 하는데, 이 때는 자바 프로젝트의  Build Path에서 라이브러리를 추가해 주어야 합니다.

 

프로젝트명에서 마우스 우클릭 > Build Path > Configure Build Path > Add JARs...(아래그림 적색원)

 

주요 클래스 및 메서드

클래스명 설명
JSONObject JSON 객체를 Map 형태로 처리
JSONArray JSON 객체를 List 형태로 처리
JSONParser JSON 데이터를 분석하기 위한 클래스
JSONValue JSON 데이터를 다루기 위한 클래스

 

JSON 문자열을 JSONObject로 변환

 

JSONParser parser = new JSONParser();
String jsonStr = "{'name': 'hong' , 'addr' : '종로' }";
jsonStr = jsonStr.replaceAll("'", "\"");
JSONObject jsonObj;
try {
	jsonObj = (JSONObject)parser.parse(jsonStr);
	System.out.println("name : " + jsonObj.get("name")); // hong
	System.out.println("addr : " + jsonObj.get("addr")); // 종로
} catch (ParseException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

java에서 json 타입의 문자열을 만들 때는 작은 따옴표로 만드는게 편리하지만, 자바는 문자열을 처리할 때 큰 따옴표로 처리 해야합니다. json 타입의 문자열 데이터를 자바의 Object로 변환하기 위해서는 json 타입의 문자열이라 할지라도 항상 큰 따옴표로 감싸있어야 합니다. 따라서 작은 따옴표로 묶여 있는 데이터들을 replaceAll 메서드를 사용하여 큰 따옴표로 바꾸어 주었습니다.

 

JSONObject를 JSON 문자열로 변환

 

JSONObject 클래스의 기본 구조는 Map 구조가 사용됩니다.

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

public class JSONTest {
	public static void main(String[] args) {
		JSONObject jsonObj = new JSONObject();
		jsonObj.put("name", "hong");
		jsonObj.put("addr", "서울 종로구");
		try {
			String jsonStr = JSONObject.toJSONString(jsonObj);
			System.out.println(jsonStr);//{"name":"hong","addr":"서울 종로구"}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

JSON 배열을 JSONArray로 변환

 

JSONArray는 기본적으로 List 구조를 갖습니다.

 

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

public class JSONTest {

	public static void main(String[] args) {

		JSONParser parser = new JSONParser();
		String jsonStr = "[{'name': 'hong' , 'addr' : '종로' }, " 
		               + " {'name': 'choi' , 'addr' : '부산' }]";
		jsonStr = jsonStr.replaceAll("'", "\"");
		JSONArray jsonArray = null;
		try {
			jsonArray = (JSONArray) parser.parse(jsonStr);

			/*
			 * name : hong 
			 * addr : 종로 
			 * name : choi 
			 * addr : 부산
			 */
			for (Object obj : jsonArray) {
				JSONObject jsonObj = (JSONObject) obj;
				System.out.println("name : " + jsonObj.get("name"));
				System.out.println("addr : " + jsonObj.get("addr"));
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

 

JSONArray를 JSON 문자열로 변환

 

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class JSONTest {
	public static void main(String[] args) {
		JSONArray jsonArray = new JSONArray();
		JSONObject jsonObj1 = new JSONObject();
		jsonObj1.put("name", "hong");
		jsonObj1.put("addr", "서울 종로구");
		
		JSONObject jsonObj2 = new JSONObject();
		jsonObj2.put("name", "kim");
		jsonObj2.put("addr", "강원도 정동진");
				
		jsonArray.add(jsonObj1);
		jsonArray.add(jsonObj1);
		
		try {
			String jsonStr = JSONArray.toJSONString(jsonArray);
			//[{"name":"hong","addr":"서울 종로구"},{"name":"hong","addr":"서울 종로구"}]
			System.out.println(jsonStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}