: 키-값(key-value)로 이루어진 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷(데이터 형식)이다.
네트워크를 통해 데이터를 주고받는데 사용되는 경량의 데이터 교환 형식으로, JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법이다.
"key" : "value",
"name" : "Jing",
"age" : 22
JSON 형식은 자바스크립트 객체와 마찬가지로 key/value가 존재할 수 있으며 key값이나 문자열은 항상 쌍따옴표를 이용하여 표기해야 한다. JSON 형식에서는 null, number, string, array, object, boolean을 사용할 수 있다.
: Java 객체를 Json으로 변환 또는 Json을 Java 객체로 변환해주는 오픈 소스 자바 라이브러리이다. (Google에서 제공)
보통 웹에서 받은 JSON결과물을 처리하기 위해서 사용하며, JSON 문자열을 자바 객체로 만든다.
기본적인 순서는 Volley를 사용해서 웹서버에서 JSON을 받고 GSON을 이용하여 자바 객체로 변경한 뒤, 그 객체 안에 들어있는 데이터를 사용하게 된다.

만약 서버를 통해 새로운 데이터를 JSON으로 받게 되면 일일이 받은 JSON 데이터를 Model 객체로 매핑시켜야 되는 번거로움이 있다.
이러한 번거로움을 해결하기 위한 라이브러리가 바로 GSON 라이브러리이다.
(참고: https://rkdxowhd98.tistory.com/180)
📍 Gradle에 라이브러리 추가
GSON은 외부 라이브러리이므로 Gradle에 라이브러리를 추가해야 한다.implementation 'com.google.code.gson:gson:2.8.2'📍 Gson 생성
: Gson을 사용하기 위해서 일단 Gson 객체를 만들어야 한다. GsonBuilder를 사용하여 다양한 설정을 할 수 있고, Gson으로 바로 생성할 수 있다.val gson: Gson = GsonBuilder() .setPrettyPrinting() .serializeNulls() .excludeFieldsWithModifiers(Modifier.TRANSIENT) .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) .create() val gson = Gson()📍 Serialize
: Object를 Json으로 바꾸는 방법. Gson.toJson으로 쉽게 바꿀 수 있다.fun serialize() { val user = User( LoginForm("rkdxowhd98", null), Profile("강태종") ) gson.toJson(user).also { println(it) } }📍 Deserialize
: Json을 Object로 바꾸는 방법. Gson.fromJson을 사용하여 쉽게 바꿀 수 있다.fun deserialize() { val json = "{\"loginForm\":{\"id\":\"rkdxowhd98\",\"password\":\"123123\"},\"profile\":{\"name\":null}}" gson.fromJson(json, User::class.java).also { println(it) } }
📍직렬화 & 역직렬화
- 직렬화 : 객체를 Json으로 변환
(객체를 전송 가능한 형태로, 연속적인 데이터로 변형)- 역직렬화 : Json을 객체로 변환
(직렬화된 데이터를 다시 객체 형태로 변환)
✔️ 참고 사이트
https://noapps-code.tistory.com/91
https://rkdxowhd98.tistory.com/180