제목
JSON과 직렬화와 역직렬화
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
- 개발자
- 중간 수준 (기본 개념과 실무 적용 사례 포함)
핵심 요약
- JSON은 key-value 구조의 텍스트 기반 데이터 형식으로, 가볍고 인간이 읽기 쉬우며 여러 언어 간 데이터 교환에 적합하다.
- 직렬화(Serialization)는 객체를 바이트 스트림으로 변환하는 과정이고, 역직렬화(Deserialization)는 이를 다시 객체로 복원하는 과정이다.
- Java의 Serializable은 이진 직렬화로, 다른 언어와의 연동성이 떨어지며 버전 호환성 문제가 발생할 수 있다.
섹션별 세부 요약
1. JSON의 특징
- 문자열 기반 텍스트로, 프레임워크 및 언어 독립적이다.
- API 데이터 반환 및 설정 파일 등에 주로 사용된다.
- 가볍고 사람이 읽기 쉬워 디버깅에 유리하다.
2. 직렬화/역직렬화 정의
- 직렬화는 객체를 전송/저장 가능한 형식(문자열 또는 바이트)으로 변환하는 기술이다.
- 역직렬화는 직렬화된 데이터를 객체로 복원하는 과정이다.
- Java Serializable은 바이트 기반 직렬화로,
.ser
파일에 저장된다.
3. Java의 직렬화 구현
- Serializable 인터페이스를 구현해야 ObjectOutputStream으로 직렬화 가능하다.
- ObjectInputStream으로 역직렬화 시, Serializable 인터페이스 구현이 필수적이다.
- 버전 호환성 문제 및 다른 언어 연동성 부족이 단점이다.
4. JSON vs Java Serializable
- JSON은 텍스트 기반으로, 다른 언어(JavaScript, Python, Java 등)와 호환성이 우수하다.
- Java Serializable은 이진 형식으로, 자바 전용이며, 데이터 크기가 크고 호환성 문제가 발생할 수 있다.
- JSON, XML, YAML은 모두 텍스트 기반 직렬화 포맷이며, 사용 목적과 환경에 따라 선택해야 한다.
결론
- JSON은 다국어 지원 및 가독성 측면에서 우수하므로, 크로스 플랫폼 데이터 교환 시 우선 선택해야 한다.
- Java Serializable은 자바 생태계 내부에서 사용할 때 유리하지만, 다른 언어와의 연동 시 JSON을 권장한다.