REST API - XML과 JSON

Hallelujah·2024년 11월 28일

CS

목록 보기
7/10

XML (eXtensible Markup Language)

  • XML은 데이터를 저장하고 교환하기 위한 마크업 언어로, 사람이 읽기 쉽고 기계가 해석하기 쉬운 형식.
  • 1998년 W3C 표준으로 제정.
  • 데이터를 계층적(트리 구조)으로 표현.

XML 예제

<user>
    <id>1</id>
    <name>홍길동</name>
    <email>hong@example.com</email>
</user>

JSON (JavaScript Object Notation)

  • JSON은 데이터를 저장하고 교환하기 위한 경량 데이터 포맷으로, 객체 표기법을 기반으로 한 단순한 구조.
  • 2001년 Douglas Crockford가 설계.
  • 데이터를 키-값 쌍으로 표현.

JSON 예제

{
    "id": 1,
    "name": "홍길동",
    "email": "hong@example.com"
}

XML과 JSON의 주요 비교

항목XMLJSON
구조태그 기반의 계층적 구조키-값 쌍과 배열로 표현되는 단순한 구조
데이터 타입 지원문자열만 지원문자열, 숫자, 불리언, 배열, 객체 등 다양한 타입 지원
가독성복잡한 태그로 인해 덜 직관적간결한 문법으로 더 직관적
확장성다양한 데이터 구조와 메타데이터를 표현 가능메타데이터 표현에 제한적
데이터 크기태그 사용으로 인해 상대적으로 크기가 큼태그가 없어서 더 작고 네트워크 효율적
유효성 검사DTD, XSD를 통한 정교한 유효성 검사 지원스키마(JSON Schema)로 기본 유효성 검사 가능
속도파싱 속도가 느림파싱 속도가 빠름
호환성대부분의 언어 및 시스템에서 지원대부분의 언어 및 시스템에서 지원
사용 사례문서 중심의 데이터 교환REST API, 경량 데이터 교환

XML과 JSON의 주요 장단점

XML 장점

  1. 유연성:
    • 트리 구조를 통해 복잡한 데이터 모델 표현 가능.
  2. 유효성 검사:
    • DTD(Document Type Definition)나 XSD(XML Schema)를 사용해 데이터를 검증.
  3. 다양한 표준 지원:
    • XPath, XSLT, SOAP 등의 표준과 통합 가능.

XML 단점

  1. 복잡성:
    • 태그 기반 문법으로 인해 읽기 어렵고 작성하기 복잡.
  2. 비효율성:
    • 데이터 크기가 크며, 네트워크와 스토리지 자원 소모가 많음.

JSON 장점

  1. 간결성:
    • 태그 없이 키-값 쌍으로 데이터를 표현해 간결하고 읽기 쉬움.
  2. 경량성:
    • 데이터 크기가 작아 네트워크 전송 속도가 빠름.
  3. 언어 호환성:
    • 대부분의 프로그래밍 언어에서 JSON 객체를 네이티브로 처리 가능.

JSON 단점

  1. 스키마 부족:
    • 정교한 유효성 검증이 어렵고, 데이터 무결성 보장이 약함.
  2. 메타데이터 표현 한계:
    • XML처럼 데이터에 메타데이터를 포함하기 어려움.

XML과 JSON의 사용 사례

사용 사례XMLJSON
웹 서비스SOAP 기반 웹 서비스RESTful API
문서 교환복잡한 문서 데이터 (예: 전자문서, 보고서)경량 데이터 교환 (예: 모바일 앱, 브라우저-서버 통신)
데이터 저장복잡한 구조의 설정 파일, 메타데이터 포함된 데이터경량 설정 파일, 간단한 데이터 저장
데이터 검증 필요데이터 무결성 검증 필요검증이 필요 없는 빠른 데이터 교환

XML과 JSON 변환

XML과 JSON은 서로 변환이 가능합니다. 많은 라이브러리에서 이를 지원합니다.

Java 예제

XML → JSON

import org.json.JSONObject;
import org.json.XML;

public class XmlToJson {
    public static void main(String[] args) {
        String xml = "<user><id>1</id><name>홍길동</name><email>hong@example.com</email></user>";
        JSONObject json = XML.toJSONObject(xml);
        System.out.println(json.toString(4));
    }
}

JSON → XML

import org.json.JSONObject;
import org.json.XML;

public class JsonToXml {
    public static void main(String[] args) {
        String json = "{\"id\":1,\"name\":\"홍길동\",\"email\":\"hong@example.com\"}";
        String xml = XML.toString(new JSONObject(json));
        System.out.println(xml);
    }
}

참고

profile
개발자

0개의 댓글