Developer N
[Spring Boot] Json과 Gson 본문
JSON(JavaScript Object Notation)이란
JavaScript에서 객체를 표현하는 방법.
다양한 프로그래밍 언어에서 데이터를 주고받기위해 사용한다.
XML 등과 같이 데이터를 표현하는 일종의 데이터 표현 표준이다.
장점
1) 가독성 : 객체의 구조를 파악하기 쉽다
2) 가벼움 : JSON 이전에 사용하던 XML에 비해 가볍다
3) 플랫폼 독립적 : 특정 언어나 플랫폼에 독립적이어서 JSON 형식만 잘 지킨다면 어떤 시스템이든 데이터 교환이 가능하다. 또한 대부분의 언어에서 JSON 라이브러리를 제공하기 때문에 편리하다.
JSONObject, JSONArray 사용법
1) JSONObject
JSONObject는 객체를 JSON 객체로 바꿔주거나 JSON 객체를 새로 만드는 역할을 한다.
JSONObject jsonObject1 = new JSONObject(); // json객체1 생성
JSONObject jsonObject2 = new JSONObject(); // json객체2 생성
// json 객체(jsonObject1)에 key가 'key1'이고 value가 'value1'인 요소 추가하기
jsonObject1.put("key1", "value1");
// json 객체(jsonObject2)에 key가 'key2'이고 value가 'value2'인 요소 추가하기
jsonObject2.put("key2", "value2");
2) JSONArray
JSONArray는 JSON 객체 또는 다른 데이터가 들어있는 Array이다.
// 위에서 만든 JSONObject객체 두개를 JSONArray에 넣기
JSONArray jsonArray = new JSONArray();
jsonArray.put(JSONObject1);
jsonArray.put(JSONObject2);
GSON이란
자바 객체를 JSON으로 바꾸는 작업은 GSON이라는 패키지를 이용하면 쉽게 할 수 있다.
GSON은 구글에서 만든 자바 오브젝트 직렬화/역직렬화 라이브러리다.
Java 클래스를 다른 곳으로 전송할 때 사용할 수 있는 직렬화(Serialize) 포맷으로 JSON이나 XML 같은 텍스트 포맷을 사용하는 경우가 많다.
즉, GSON은 자바객체를 JSON으로, JSON을 자바객체로 쉽게 표현 및 변환이 가능하다.
1) GSON 직렬화
흔히 Spring Boot를 이용하여 리스트를 Service로부터 받아와 Controller에서 View로 리스트를 JSON 형식으로 전달할때 사용
Gson gson = new Gson(); // Gson 객체 생성
List<Animal> animalList = testService.getAnimerList(); // Service로부터 리스트 받아오기
String json = gson.toJson(animalList); // Json 형식으로 변환
// 아래처럼 한줄로도 표현 가능
// String json = new Gson().toJson(testService.getAnimerList());
2) GSON 역직렬화
역직렬화는 받아온 Json 데이터를 Java 객체로 변환하고자 할 때 사용
JSONObject jsonObject = new JSONObject(); // Java 객체로 변환할 JSON 객체 생성
jsonObject.put("name", "HongGilDong");
jsonObject.put("age", "20");
Person person = new Gson().fromJson(jsonObject.toString(), Person.class); // JSON 객체를 Java 객체로 변환
'STUDY > JAVA | SPRING' 카테고리의 다른 글
[Java8] stream()을 활용하여 객체의 특정 필드로 구성된 List 생성하기 (0) | 2023.06.28 |
---|---|
[Java] String 문자열 특정 길이만큼 분할하기 (0) | 2023.06.01 |
[Java8] Stream()을 이용하여 List<Map<String, Object> to List<String> 자료형 변환 (0) | 2023.04.26 |
[JAVA] 자바 스트림(Stream) 활용 (0) | 2023.03.23 |
[Spring] @RequiredArgsConstructor 어노테이션을 사용하여 생성자 주입하기 (0) | 2023.03.23 |