반응형
데이터 교환 형식이란?
데이터 교환 형식이란 서로 다른 시스템이나 애플리케이션 간에 정보를 교환하기 위한 표준화된 포맷입니다. 대표적으로 JSON과 XML이 사용됩니다.
JSON(JavaScript Object Notation)이란?
JSON은 사람이 읽기 쉽고, 기계가 처리하기 쉬운 데이터 교환 형식입니다. JavaScript에서 유래되었으며, 특히 웹과 모바일 환경에서 널리 사용됩니다.
JSON의 특징
- 텍스트 기반의 데이터 형식
- 가볍고 구조가 단순함
- 프로그래밍 언어와 독립적임
- 키(key)와 값(value)의 쌍으로 이루어진 데이터 구조
- 배열과 객체 형태로 데이터를 표현 가능
JSON 예시
{
"name": "김철수",
"age": 25,
"skills": ["Java", "Spring Boot", "React"],
"address": {
"city": "서울",
"country": "대한민국"
}
}
직렬화(Serialization)와 역직렬화(Deserialization)
직렬화(Serialization)란?
직렬화는 데이터 구조나 객체를 저장하거나 전송하기 위해 일정한 형식(JSON, XML 등)으로 변환하는 과정입니다.
예시: 자바 객체 → JSON 문자열
ObjectMapper mapper = new ObjectMapper(); // Jackson 라이브러리 사용
User user = new User("김철수", 25);
String jsonString = mapper.writeValueAsString(user); // 직렬화
역직렬화(Deserialization)란?
역직렬화는 직렬화된 데이터를 다시 원래의 객체나 데이터 구조로 변환하는 과정입니다.
예시: JSON 문자열 → 자바 객체
String jsonString = "{\"name\":\"김철수\", \"age\":25}";
User user = mapper.readValue(jsonString, User.class); // 역직렬화
XML(eXtensible Markup Language)이란?
XML은 데이터를 구조화하여 저장하거나 전달할 목적으로 사용하는 마크업 언어입니다. 태그 기반으로 데이터를 표현하며, 오래 전부터 데이터 교환 및 설정 파일로 사용되어 왔습니다.
XML의 특징
- 계층적 구조 표현 가능
- 확장 가능하며 구조화된 데이터 관리에 적합
- 사람이 읽고 쓰기 쉽지만 JSON보다 복잡한 구조를 가짐
- 데이터와 메타데이터를 동시에 표현 가능
XML 예시
<user>
<name>김철수</name>
<age>25</age>
<skills>
<skill>Java</skill>
<skill>Spring Boot</skill>
<skill>React</skill>
</skills>
<address>
<city>서울</city>
<country>대한민국</country>
</address>
</user>
JSON과 XML 비교
구분 | JSON | XML |
표현방식 | 키-값, 배열, 객체 기반 | 태그 기반의 계층적 구조 |
무게 | 가볍고 간결함 | JSON보다 무겁고 복잡함 |
가독성 | 높음 (간결하고 직관적) | 보통 (태그로 인해 복잡성 증가) |
활용성 | 웹, API, 앱에서 널리 사용 | 과거 시스템 및 설정 파일에 사용 |
확장성 | 제한적 | 매우 높음 (태그로 구조 정의 가능) |
Spring Boot에서의 활용 (Gradle, application.yml 기준)
1. JSON 활용법 (Spring Boot에서)
스프링 부트는 기본적으로 Jackson 라이브러리를 통해 JSON을 처리합니다.
Gradle 의존성 추가 예시
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.core:jackson-databind'
(사실 스프링 부트 웹 스타터를 추가하면 자동으로 Jackson 라이브러리를 포함하므로 별도의 의존성 추가가 필요 없습니다.)
2. XML 활용법 (Spring Boot에서)
XML은 기본적으로 Jackson XML 모듈을 추가하여 처리할 수 있습니다.
Gradle 의존성 추가 예시
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'
application.yml 예시 (JSON/XML 설정 관련 예시)
spring:
jackson:
serialization:
indent-output: true # JSON 출력 시 가독성을 위한 들여쓰기
XML은 Jackson을 통해 처리되므로, 별도의 application.yml 설정 없이 라이브러리만 추가하면 됩니다.
반응형
'CS 공부일지' 카테고리의 다른 글
컴파일러 언어와 인터프리터 언어의 개념, 차이점 (0) | 2025.03.30 |
---|---|
CI/CD (Continuous Integration / Continuous Delivery & Deployment) (0) | 2025.03.27 |
클라우드 주요 개념 정리 (가상머신, 온프레미스&오프프레미스, IaaS, PaaS, SaaS, 도커) (1) | 2025.03.26 |
API 개념과 원리 (1) | 2025.03.25 |
MVC(Model-View-Controller) 패턴 (0) | 2024.06.02 |