💬데이터 교환?
웹 개발에서 데이터를 교환하는 데 필수적인 두 가지 형식, JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)에 대해 자세히 알아보고자 합니다.
이 두 형식은 웹 서버로부터 데이터를 받거나 컴퓨터 간에 데이터를 전송하는 데 사용될 수 있으며, 모두 사람이 읽을 수 있는(self-describing) 자가 설명적인 구조를 가지고 있고, 계층적인 구조로 값을 값 안에 포함할 수 있습니다. 또한 다양한 프로그래밍 언어에서 파싱(parsing)되고 사용될 수 있으며, XMLHttpRequest를 사용하여 가져올 수 있다는 공통점을 가지고 있습니다.
하지만 이 두 형식은 중요한 차이점들을 가지고 있어 각각의 용도와 장단점이 명확하게 나뉩니다.
1. JSON (JavaScript Object Notation)이란?
JSON은 이름에서 알 수 있듯이 JavaScript Object Notation의 약자입니다. 이는 경량 데이터 교환 형식으로, 자바스크립트 객체 표기법으로 작성된 단순 텍스트입니다. 주로 컴퓨터 간에 데이터를 보내는 데 사용됩니다.
JSON의 특징
- 간결성: JSON은 종료 태그를 사용하지 않기 때문에, 일반적으로 XML보다 짧고, 읽고 쓰기가 더 빠릅니다.
- 배열 지원: JSON은 배열을 사용할 수 있습니다.
{"employees":[
{ "firstName":"John", "lastName":"Doe" },
{ "firstName":"Anna", "lastName":"Smith" }
]}
- 자바스크립트 친화적: JSON은 자바스크립트 객체 생성 코드와 문법적으로 유사하여, 자바스크립트 프로그램이 JSON 데이터를 자바스크립트 객체로 쉽게 변환할 수 있습니다. 자바스크립트에는 JSON 문자열을 자바스크립트 객체로 변환하는 JSON.parse() 내장 함수가 있습니다.
- 언어 독립성: JSON 문법은 자바스크립트 객체 표기법에서 파생되었지만, 텍스트 전용 형식이기 때문에 다양한 프로그래밍 언어에서 JSON을 읽고 생성하는 코드가 존재합니다.
- 데이터 저장: JSON은 자바스크립트 객체를 텍스트로 저장할 수 있도록 해줍니다.
JSON 예시
아래 JSON 문자열은 name, age, car 세 가지 속성을 가진 객체를 정의하며, 각 속성에는 값이 있습니다.
{"name":"John", "age":30, "car":null}
2. XML (eXtensible Markup Language)이란?
XML은 eXtensible Markup Language의 약자입니다. 이는 HTML과 매우 유사한 마크업 언어지만, 데이터를 저장하고 전송하기 위해 설계되었습니다. XML은 스스로를 설명하는(self-descriptive) 방식으로 데이터를 표현하도록 설계되었습니다.
XML의 특징
- 데이터 중심: XML은 데이터 자체에 초점을 맞춰 데이터를 전달하도록 설계되었습니다. 반면 HTML은 데이터를 어떻게 보여줄지에 초점을 맞춰 데이터를 표시하도록 설계되었습니다.
- 태그 정의의 자유: HTML 태그(<p>, <h1>, <body> 등)와 달리, XML 태그는 미리 정의되어 있지 않습니다. XML 문서의 작성자가 태그와 문서 구조를 모두 정의해야 합니다.
- 데이터만 전달, 아무것도 하지 않음: XML은 그 자체로 아무것도 하지 않습니다. XML은 태그로 감싸진 정보일 뿐이며, 이 데이터를 보내고, 받고, 저장하거나 표시하려면 별도의 소프트웨어가 필요합니다.
- 확장성: XML은 새로운 데이터가 추가되거나 제거되어도 대부분의 애플리케이션이 예상대로 작동할 수 있도록 설계되어 있습니다.
- 데이터 공유 용이성: XML은 데이터를 일반 텍스트 형식으로 저장하여 소프트웨어 및 하드웨어 독립적인 방식으로 데이터를 저장, 전송 및 공유할 수 있게 합니다. 이는 특히 호환되지 않는 시스템 간의 데이터 교환을 단순화합니다.
XML 예시
아래 위 XML은 송신자 정보, 수신자 정보, 제목, 메시지 본문을 가지고 있어 상당히 자가 설명적입니다.
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
3. JSON과 XML의 차이점
가장 중요한 차이점은 데이터 파싱 방식입니다.
- JSON 파싱: JSON은 표준 자바스크립트 함수(JSON.parse())로 파싱할 수 있으며, 즉시 사용 가능한 자바스크립트 객체로 파싱됩니다. 서버에서 순수한 텍스트를 받아 자바스크립트 객체로 사용할 수 있으며, 복잡한 파싱이나 변환 없이 자바스크립트 객체로 데이터를 다룰 수 있습니다.
- XML 파싱: XML은 XML 파서로 파싱해야 합니다. XML은 JSON보다 파싱하기 훨씬 더 어렵습니다.
이러한 파싱 방식의 차이로 인해 AJAX 애플리케이션에서 JSON이 XML보다 더 빠르고 쉽습니다. XML을 사용하는 경우 XML 문서를 가져온 후 XML DOM(문서 객체 모델)을 사용하여 문서를 반복하고 값을 추출하여 변수에 저장해야 하는 반면, JSON은 JSON 문자열을 가져와 JSON.parse로 파싱하기만 하면 됩니다.
| 특징 | JSON | XML |
| 태그 사용 | 종료 태그 없음 | 태그로 데이터 감쌈 (HTML과 유사) |
| 길이 | 더 짧고 간결함 | 더 길고 장황할 수 있음 |
| 읽기/쓰기 속도 | 더 빠름 | 상대적으로 느림 |
| 데이터 구조 | 배열 사용 가능, 자바스크립트 객체 표기법 | 데이터 저장 및 전송에 중점, 마크업 언어 |
| 파싱 방식 | JSON.parse()로 즉시 객체화 | XML 파서 필요, 더 복잡함 |
| AJAX 성능 | 더 빠르고 쉬움 | 더 복잡한 파싱 과정 필요 |
| 태그 정의 | 해당 없음 | 사용자가 태그를 정의 (미리 정의된 태그 없음) |
💬마무리하며
JSON과 XML은 모두 강력한 데이터 교환 형식이며, 각각의 장점을 가지고 있습니다.
- JSON은 자바스크립트와의 자연스러운 통합, 간결한 문법, 그리고 쉬운 파싱 덕분에 웹 애플리케이션, 특히 AJAX 기반의 비동기 통신에서 선호됩니다. 빠르고 효율적인 데이터 처리가 필요한 경우 탁월한 선택입니다.
- XML은 데이터 정의의 높은 유연성과 확장성 덕분에 다양한 시스템 간의 복잡한 데이터 공유나 문서 지향적인 데이터 저장에 강점을 가집니다. 데이터의 구조와 의미를 엄격하게 정의해야 하는 경우에 유용할 수 있습니다.
참고자료
'CS' 카테고리의 다른 글
| 프로세스 메모리 관리 모델과 가상 메모리 구조 (6) | 2025.07.17 |
|---|---|
| 파서(Parser)란? (0) | 2025.07.17 |
| 리눅스(Linux)란 무엇인가? (0) | 2025.07.16 |
| git vs GitHub (0) | 2025.07.15 |