스프링 프레임워크에서 GSON을 활용해서 JSON으로 쉽게 파싱하는 법

2019. 5. 23. 17:43Spring/Tip

JSON의 데이터 타입

string, number, boolean타입, null, object, array가 있습니다.

 

object의 기본 표현 형식은 키 : 값 쌍의 집합이며, 키값은 문자열이기 때문에 반드시 쌍따옴표를 붙여야하고 

값에는 기본자료형, 배열, 객체를 넣어주면 됩니다.

 

배열은 각각의 요소가 나타나는 순서에 의미가 존재

객체는 각 쌍이 나오는 순서는 의미가 없음

 

array의 형식

 [10, {"v": 20}, [30, "마흔"]]

object의 형식

 {"name2": 50, "name3": "값3", "name1": true}

 

출처 : https://ko.wikipedia.org/wiki/JSON#%EC%98%88%EC%A0%9C

 

스프링 프레임워크에서 웹을 개발 중  비동기 브라우저/서버 통신 (AJAX)을 위해 object, List, Map를 JSON 형태로 변환하는 경우가 있는데 쉽게 바꾸는 방법이 있다.

 

pom.xml

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>

pom.xml에 dependency를 추가합니다.

 

Gson gson = new GsonBuilder().create();

gson.toJson(객체들 삽입);

 

예제) Object 

public class excute {

	public static void main(String[] args) {
		Vending_machineVO drink = new Vending_machineVO();
		drink.setName("콜라");
		drink.setPrice(1400);
		
        Gson gson = new GsonBuilder().create();

		String test = gson.toJson(drink);
        System.out.println(test);
	}
}

※ VO내부의 필드들의 순서에 JSONObject 출력이 됩니다.

 

 

예제) List<primitive type>

public class excute {

	public static void main(String[] args) {
		ArrayList<String> drinkNameList = new ArrayList<String>();
		drinkNameList.add("오로나민 C");
		drinkNameList.add("밀키스");
		drinkNameList.add("맥콜");
		
		Gson gson = new GsonBuilder().create();

		String test = gson.toJson(drinkNameList);
		System.out.println("결과 : "+test);
	}
}

※ List에 추가한 순서대로 출력되고 JSONArray 형식으로 반환받습니다.

 

 

예제) List<Object>

public class excute {

	public static void main(String[] args) {
		ArrayList<Vending_machineVO> drinkList = new ArrayList<Vending_machineVO>();
		
		for(int i=1;i<3;i++) {
			Vending_machineVO drinkElement = new Vending_machineVO();
			drinkElement.setName("음료"+i);
			drinkElement.setPrice(3000);
			drinkList.add(drinkElement);
		}

		
		Gson gson = new GsonBuilder().create();

		String test = gson.toJson(drinkList);
		System.out.println("결과 : "+test);
	}
}

※ JSONArray 안에 JSONObject가 담깁니다.

 

 

예제) Map<primitive type,primitive type>

public class excute {

	public static void main(String[] args) {
		HashMap<String, Integer> drinkMap = new HashMap<String, Integer>();
		drinkMap.put("환타", 1200);
		drinkMap.put("데미소다", 1000);

		Gson gson = new GsonBuilder().create();

		String test = gson.toJson(drinkMap);
		System.out.println("결과 : "+test);
	}
}

※ Map은 {"키":"값","키":"값",....}으로 표기 됩니다.

 

 

예제)  Map<primitive type,Object>

public class excute {

	public static void main(String[] args) {
		HashMap<String, Vending_machineVO> machineList = new HashMap<String, Vending_machineVO>();
		
		for(int i=1;i<3;i++) {
			Vending_machineVO drinkElement = new Vending_machineVO();
			drinkElement.setName("펩시콜라"+i);
			drinkElement.setPrice(2000);
			
			machineList.put("머신번호"+i, drinkElement);
		}


		Gson gson = new GsonBuilder().create();

		String test = gson.toJson(machineList);
		System.out.println("결과 : "+test);
	}
}

 

※ Map<primitive type,Object> 형식으로 데이터를 넣어주게 되면 JSONArray로 반환됩니다.