JSON이란?
JSON(JavaScript Object Notation)은 경량의 데이터 교환 포맷으로
사람이 읽고 쓰기 쉽고 기계가 파싱하고 생성하기 편리합니다.
웹 어플리케이션 개발에서 클라이언트와 서버 간에 데이터를 주고받는 표준 포맷으로 자리 잡았습니다.
이 글에서는 JSON의 기본 구조와 자바 언어를 사용한 JSON 데이터 처리 방법을 소개합니다.
JSON의 구조
JSON 포맷은 두 가지 구조를 기반으로 합니다:
1. 객체(Object): 키-값 쌍의 집합입니다. 각 키는 문자열이며, 값은 다양한 데이터 타입이 될 수 있습니다.
2. 배열(Array): 값의 순서 있는 리스트입니다.
아래에 바로 예시를 봐봅시다.
JSON 구조 예시
{
"name": "Sumin Kim",
"age": 30,
"isEmployed": true,
"address": {
"street": "123 Main St",
"city": "seoul"
},
"phoneNumbers": [
"123-456-7890",
"987-654-3210"
]
}
위에 설명했다싶이
키(key)는 큰따옴표("")에 속한 문자열이여야합니다.
값(value)는 다양한 형태가 될 수 있습니다.
배열처럼도 될 수 있습니다.("phoneNumbers": ["123-456-7890", "987-654-3210"])
JSON 구조 - 자바에서 예시
String json = "{\"name\":\"Sumin Kim\",\"age\":30,\"isEmployed\":true,\"address\":{\"street\":\"123 Main St\",\"city\":\"seoul\"},\"phoneNumbers\":[\"123-456-7890\",\"987-654-3210\"]}";
자바에서는 위와 같은 문자열 형태로 받게 됩니다.
역직렬화와 직렬화
받은 JSON을 어떻게 자바객체로 만드냐 -> 역직렬화 (Serialization)
자바객체를 어떻게 json으로 만드냐 -> 직렬화 (Deserialization)
위 예시에를 베이스로 역직렬화, 직렬화를 해볼게요
Gson라이브러리를 사용 해볼겁니다. 편의상 lombok도 추가할게요!
1. 메이븐에 의존성 추가
<!-- gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
2. 매핑 될 자바 객체 생성
@Getter
@Setter
@ToString
public class Person {
String name;
int age;
boolean isEmployed;
Address address;
String[] phoneNumbers;
}
@Getter
@Setter
@ToString
public class Address {
String street;
String city;
}
3. 메인에서 역직렬화, 직렬화 해보기
import com.google.gson.Gson;
public class JsonExample {
public static void main(String[] args) {
String json = "{\"name\":\"Sumin Kim\",\"age\":30,\"isEmployed\":true,\"address\":{\"street\":\"123 Main St\",\"city\":\"seoul\"},\"phoneNumbers\":[\"123-456-7890\",\"987-654-3210\"]}";
// JSON 문자열을 자바 객체로 변환 (역직렬화)
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
System.out.println(person);
// 자바 객체를 다시 JSON 문자열로 변환 (직렬화)
String newJson = gson.toJson(person);
System.out.println(newJson);
}
}
결론
JSON은 그 유연성과 간결성 덕분에 현대 웹 개발에서 데이터 교환의 중심적인 역할을 하고 있습니다.
다양한 프로그래밍 언어와 플랫폼에서 지원되며, API 통신, 설정 파일, 데이터 저장 등 다양한 용도로 사용됩니다.
참고자료
https://www.oracle.com/kr/database/what-is-json/
'통신&프로토콜&네트워크' 카테고리의 다른 글
웹 개발의 핵심: AJP와 HTTP를 활용한 WEB-WAS 연동 전략(feat. 아파치, 톰캣) (24) | 2024.02.21 |
---|