JSON vs. XML: 데이터 교환 포맷의 선택 전략
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
API 개발자, 백엔드 엔지니어, 기업 시스템 아키텍처 설계자
핵심 요약
- JSON은 가볍고 빠른 파싱 속도로 웹 API 및 모바일 앱에 적합하며, JavaScript와 원生 호환성 강점.
- XML은 복잡한 기업 시스템 및 legacy 시스템과의 호환성이 높고, 메타데이터 및 스키마 관리가 풍부.
- Spring Boot에서 Jackson과 JAXB를 활용해 JSON/XML을 각각 처리 가능.
섹션별 세부 요약
1. 서론
- JSON과 XML은 2024년 기준 78%의 API에서 JSON이 사용되지만, 기업 시스템에서는 XML이 여전히 주요 포맷.
- 성능, 호환성, 확장성 등 개발자 선택에 영향을 미침.
- 예시: 금융 스타트업에서 XML 기반 시스템과 JSON API 통합 문제 해결 사례.
2. JSON과 XML의 정의 및 특징
- JSON
- 키-값 쌍과 배열로 구성됨.
- 인간이 읽기 쉬움.
- JavaScript와 원생 호환.
- XML
- 태그 기반 포맷.
- 스키마와 네임스페이스 지원.
- XXE 공격 등 보안 취약점 존재.
3. 성능 및 사용 사례 비교
- 성능
- JSON: 파싱 속도 빠름 (JavaScript 내장 지원).
- XML: 태그 인식으로 인한 처리 지연.
- 사용 사례
- JSON: 웹 API, 모바일 앱.
- XML: 기업 시스템, legacy 통합.
4. Spring Boot에서의 JSON 처리 예시
- 의존성
- Jackson
라이브러리 사용.
- RestController
- @RequestBody
로 JSON 파싱.
- ObjectMapper
를 통해 데이터 직렬화/역직렬화.
- 예제 코드
```java
@PostMapping
public Payment createPayment(@RequestBody Payment payment) {
payment.setId("p" + payments.size());
payments.put(payment.getId(), payment);
return payment;
}
```
5. Spring Boot에서의 XML 처리 예시
- 의존성 추가
- JAXB
라이브러리 사용.
- RestController
- @XmlRootElement
및 @XmlElement
어노테이션으로 XML 구조 정의.
- Unmarshaller
를 통해 XML 파싱.
- 예제 코드
```java
@PostMapping(consumes = MediaType.APPLICATION_XML_VALUE)
public Payment createPaymentXml(@RequestBody Payment payment) {
payment.setId("p" + payments.size());
payments.put(payment.getId(), payment);
return payment;
}
```
결론
- JSON은 성능과 간결성이 중요한 웹 API에서, XML은 복잡한 데이터 구조와 기업 시스템 호환이 필요한 경우 선택.
- Spring Boot에서는 Jackson (JSON)과 JAXB (XML)을 활용해 효율적으로 처리 가능.
- 실무 팁: JSON은
@RequestBody
로 처리, XML은JAXB
기반의Unmarshaller
사용.