XML과 JSON

seungjun.dev·2025년 7월 26일
0

XML

  • 데이터를 저장하고 전송하기 위한 마크업 언어
  • 화면에 표시하는 목적이 아닌 데이터의 의미와 구조를 정의, 컴퓨터 간에 데이터를 교환하는 데 특화
  • 태그 기반 구조: 데이터의 각 요소를 태그로 감싸, 유저가 원하는 태그명 정의 가능
  • 트리 구조: 데이터가 루트 요소를 기준으로 하위 요소들이 중첩되어 계층적으로 표현됨
  • 확장성: 다양한 목적에 맞는 태그와 구조를 자유롭게 설계
  • 사람과 기계 모두 읽기 쉬움: 텍스트 기반이라 사람이 직접 읽고 편집 가능, 기계도 구조적으로 데이터를 처리하기 쉬움
  • 플랫폼/언어 독립적: 플랫폼이나 언어 상관없이 널리 사용 가능

예시:

<?xml version="1.0" encoding="UTF-8"?>
<book category="fantasy">
  <title>Harry Potter</title>
  <author>J.K. Rowling</author>
  <year>1997</year>
</book>
  • 구성 요소
    • 요소(Element): <title>Harry Potter</title>
    • 속성(Attribute): <book category="fantasy">
    • 텍스트 데이터(Text Content): 태그 안의 실제 값
    • 주석(Comment): <!-- 주석 내용 -->
      • 처리 명령(Processing Instruction): <?xml version="1.0">

JSON

  • 데이터를 저장하고 교환하기 위한 텍스트 기반 데이터 포맷
  • JS의 객체 표기법에서 파생, 언어나 플랫폼 관계없이 널리 사용
  • 구조
    • key - value
    • {}로 감싼다
    • JSON의 값으로 String, Number, Boolean, Array, Object, null 등이 올 수 있음
    • key 값은 반드시 ""로 감싼다

예시:

{
  "name": "정승준",
  "age": 23,
  "isStudent": true,
  "skills": ["JavaScript", "React"],
  "address": { "city": "Suwon" }
}
  • 특징
    • 사람과 기계 모두 해석하기 쉬움
    • 파싱과 생성이 쉬움
    • 가볍고 간결해 XML 대비 효율적
    • 함수나 주석, undefined 등은 표현 불가능

JSON과 XML의 차이점

기본적인 구조 차이

JSON

  • key-value 쌍 구조
  • 최소한의 문법으로 데이터 표현
{
  "name": "booduki",
  "job": "Sending DM"
}

XML

  • 태그 기반 구조
  • 태그명으로 데이터의 의미를 명확히 표현
<bot>
  <name>booduki</name>
  <job>Sending DM</job>
</bot>

같은 데이터에 대해서 다룰 때의 장단점

JSON

  • 장점
    • 파싱 속도가 XML에 비해서 빠름
    • 용량이 작다
    • 구문이 간단해서 읽기/쓰기가 쉽다
  • 단점
    • 주석이 불가능
    • 데이터 타입 제한(문자열, 숫자, 배열 등 기본 타입만 지원)
    • 문법 오류에 취약: 콤마 하나만 틀려도 전체 문서 해석 불가

XML

  • 장점
    • 스키마 검증: 데이터 무결성 검정 가능
    • 다양한 데이터 타입
    • 구조화 우수: 복잡한 계층구조, 메타데이터 표현
    • 주석 지원
  • 단점
    • XML 파서가 필요해 파싱 속도 저하
    • 큰 파일 크기
    • 복잡한 구문

어떤 게 더 좋아?

나니가스키
JSON: 웹 API와 모바일 앱에서 빠른 데이터 교환에 적합
XML: 복잡한 문서 구조와 엄격한 데이터 검증이 필요한 경우에 적합

profile
Web FE Dev | Microsoft Student Ambassadors Alumni

0개의 댓글