2019. 5. 23. 17:43ㆍSpring/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로 반환됩니다.