backend
  • README
  • DOCS
    • Java Docs
    • Servlet Docs
    • JSP Docs
    • DB & SQL Docs
    • Spring Boot Docs
    • Spring Security Docs
    • AWS Docs
  • 설치하기
    • Intellij 설정
  • 자바
    • 01 Java란?
    • 02 자바 시작하기
    • 03 자료형과 연산자
    • 04 제어문
    • 05 메소드
    • 06 클래스 기초
      • Static 보충자료
      • 패키지 보충자료
    • 07 객체지향 프로그래밍
    • 08 클래스 더 알아보기
      • 열거형 ENUM 보충자료
    • 09 클래스와 자료형
      • 다형성 보충자료
      • 제네릭 보충자료
    • 10 컬렉션 프레임워크
      • 컬렉션 프레임워크 보충자료
    • 11 람다식과 함수형 프로그래밍
      • 람다식 보충자료
    • 12 오류 대비하기
      • 오류 보충자료
    • 13 멀티태스킹
      • 멀티태스킹 보충자료
    • 교재보충
      • java.lang
  • 스프링
    • 서블릿, JSP
      • 05 Servlet(서블릿)
        • 서블릿 보충자료
        • 서블릿 추가코드
        • XML, YAML, JSON
      • 06 JSP(자바 서버 페이지)
        • JSP 보충자료
      • 07 JSTL(JSP 스탠다드 태그 라이브러리)
        • JSTL 보충자료
      • 08 Cookie(쿠키), Session(세션)
      • 09 서블릿,필터,리스너
        • 서블릿,필터,리스너 보충자료
      • 11 도서관리 프로젝트 실습
    • Spring Boot
      • 01 스프링 등장 배경, 객체지향
        • 스프링 등장 배경, 객체지향 보충자료
      • 02 IOC(제어의 역전), DI(의존성 주입)
        • IOC 보충자료
        • DI 보충자료
      • 03 스프링 구조
        • 스프링 구조 보충설명
      • 04 테스트코드 실습
      • 05 스프링 빈 설정
        • 스프링 빈 설정 보충자료
      • 06 싱글톤
        • 싱글톤 보충 자료
      • 07 스프링 빈 자동설정
        • 스프링 빈 자동설정 보충자료
      • 08 빈 생명주기
        • 빈 생명주기 보충자료
      • 09 빈 스코프
        • 빈 스코프 보충자료
      • 10 스프링 MVC
        • 스프링 MVC 보충자료
        • 데이터베이스 연동에 필요한 부분
      • 11 Validation(검증)
        • Validation(검증) 보충자료
      • 12 Bean Validation(빈검증)
        • Bean Validation(빈검증) 보충자료
      • 13 예외처리
        • 예외처리 보충자료
      • 14 타입변환
      • 15 JDBC(Java Database Connectivity)
      • 16 커넥션풀
      • 17 트랜잭션
        • 트랜잭션 보충자료
      • 18 JDBC 템플릿 활용
      • 19 MyBatis
      • 20 JPA(Java Persistence API)
      • 22 게시판 프로젝트 실습
    • Spring Security
      • 보안(Security)
      • Spring Security
      • 2. Spring Security 알아보기
        • 보안 위협 실제 사례와 방어 전략
      • 3. Spring Security 기본 동작 흐름
      • 4. Spring Security로 인증 권한 추가하기
        • Spring Security의 인증 및 인가
      • 5. Spring Security에서 세션 관리하기
        • 세션(Session)과 쿠키(Cookie) 비교, 토큰(Token)과의 관계
        • 해싱 및 해싱알고리즘
        • base64
      • 6. Spring Security 악용 보호
        • SameSite
      • 7. Spring Security로 인가 권한 추가하기
      • 8. Bcrypt(비크립트) 암호화
      • OAuth2 적용하기
  • 네트워크
    • HTTP
    • OSI 7계층
  • DB&SQL
    • 01 Database(데이터베이스)와 SQL 개요
    • 02 관계형 모델
    • 03 집합
    • 04 JOIN 연산
    • 05 MySQL
      • 세이브포인트
      • DBeaver, Mysql 오토커밋 설정 관련
    • 06 SQL 기초
      • 예시데이터 쿼리문
    • 07 SQL 실습
      • 실습 스키마
    • 08 Join 활용
      • 실습스키마
    • 09 SQL 활용
      • 실습스키마
    • 10 정규화
      • 실습 스키마
    • 데이터타입
    • 예시 프로젝트 스키마 구성
  • AWS
    • SSL 연결하기
    • 보충설명
Powered by GitBook
On this page
  1. 스프링
  2. 서블릿, JSP
  3. 05 Servlet(서블릿)

XML, YAML, JSON

1. XML, YAML, JSON이란?

XML, YAML, JSON은 데이터를 표현하거나 교환하기 위한 포맷으로, 각기 다른 방식으로 데이터를 구조화하고 표현합니다. 이들은 다양한 시스템과 애플리케이션 간의 데이터 교환, 구성 파일 작성, 데이터 저장 등에 사용됩니다.

  • XML (eXtensible Markup Language): 태그 기반의 마크업 언어로, 데이터를 계층적으로 표현하며 데이터 구조화 및 검증에 적합합니다.

  • YAML (YAML Ain't Markup Language): 들여쓰기를 통해 데이터를 간결하고 사람이 읽기 쉽게 표현하는 언어입니다.

  • JSON (JavaScript Object Notation): 키-값 쌍을 기반으로 한 데이터 표현 방식으로, REST API 등에서 경량 데이터 교환을 위해 널리 사용됩니다.


2. 각각의 상세 설명


2.1 XML (eXtensible Markup Language)

XML이란?

  • XML은 데이터를 저장하고 전송하기 위해 설계된 마크업 언어입니다.

  • 트리 구조로 데이터를 표현하며 태그를 사용해 데이터의 의미를 정의합니다.

XML의 주요 특징:

  1. 태그 기반: 시작 태그와 종료 태그로 데이터를 감싸며 데이터 구조를 정의.

    <person>
        <name>John</name>
        <age>30</age>
        <city>New York</city>
    </person>
  2. 확장 가능: 사용자가 태그를 정의하여 데이터를 유연하게 표현.

  3. 검증 가능: DTD 또는 XSD를 통해 XML 문서의 구조를 검증할 수 있음.

장점:

  • 복잡한 데이터 구조 표현 가능.

  • 데이터 검증 도구 지원.

  • 다양한 기술 및 도구와의 통합 가능.

단점:

  • 태그가 많아 데이터 크기가 커짐.

  • 복잡한 구조로 인해 가독성 낮음.

사용 사례:

  • 웹 서비스(SOAP), 구성 파일(web.xml), 전자 문서 관리(SVG, RSS).


2.2 YAML (YAML Ain't Markup Language)

YAML이란?

  • YAML은 사람이 읽기 쉽고 쓰기 쉬운 데이터 직렬화 형식입니다.

  • 들여쓰기를 통해 계층 구조를 표현하며, 간결성과 가독성을 중시합니다.

YAML의 주요 특징:

  1. 들여쓰기 기반: 데이터를 들여쓰기와 콜론(:)으로 계층 구조를 표현.

    person:
      name: John
      age: 30
      city: New York
  2. 다양한 데이터 표현:

    • 리스트:

      shopping_list:
        - apples
        - bananas
        - oranges
    • 맵:

      database:
        host: localhost
        port: 5432
  3. 주석 지원: #을 사용해 주석 작성 가능.

장점:

  • 간결하고 사람이 읽기 쉬움.

  • JSON보다 가독성이 뛰어남.

  • 구성 파일 작성에 적합.

단점:

  • 들여쓰기에 민감하여 실수하기 쉬움.

  • 복잡한 데이터 표현에는 제한적.

사용 사례:

  • 구성 파일(Docker Compose, Kubernetes 설정).

  • 애플리케이션 설정(CI/CD 도구, Python 설정 파일).


2.3 JSON (JavaScript Object Notation)

JSON이란?

  • JSON은 데이터를 객체와 배열의 형태로 표현하며, 경량 데이터 전송에 최적화된 형식입니다.

  • REST API 및 웹 애플리케이션에서 데이터 교환 표준으로 널리 사용됩니다.

JSON의 주요 특징:

  1. 키-값 쌍 기반:

    • 데이터를 {}로 감싸고, 키와 값을 :로 구분.

    {
        "name": "John",
        "age": 30,
        "city": "New York"
    }
  2. 배열 표현:

    • 대괄호([])를 사용해 배열 표현.

    {
        "shopping_list": ["apples", "bananas", "oranges"]
    }
  3. 데이터 타입 제한:

    • 문자열, 숫자, 불리언, 배열, 객체, null 만 지원.

장점:

  • 간단하고 경량화된 구조.

  • 대부분의 프로그래밍 언어에서 쉽게 파싱 및 생성 가능.

  • REST API에서 표준 데이터 교환 형식.

단점:

  • 주석 미지원.

  • 복잡한 데이터 구조 표현에 제한적.

사용 사례:

  • RESTful API.

  • 웹 애플리케이션과 서버 간 데이터 교환.

  • NoSQL 데이터베이스(MongoDB, Firebase).


3. XML, YAML, JSON 비교

특징

XML

YAML

JSON

데이터 표현 방식

태그 기반

들여쓰기 기반

키-값 쌍 기반

가독성

태그 중첩으로 복잡할 수 있음

가장 가독성 높음

중첩이 많으면 가독성 떨어짐

데이터 크기

가장 큼

중간

가장 작음

유연성

사용자 정의 태그 사용 가능

다양한 데이터 표현 가능

제한된 데이터 타입

검증 도구

DTD, XSD

제한적

JSON Schema

주석 지원

지원

지원

미지원

사용 사례

SOAP, 구성 파일, 문서 관리

구성 파일(Docker, Kubernetes 설정)

REST API, 데이터 교환

속도

느림

빠름

매우 빠름


4. 언제 어떤 형식을 선택할까?

  1. 복잡한 데이터 구조:

    • XML: 태그와 계층 구조로 복잡한 데이터 표현.

    • 예: SOAP, 문서 관리.

  2. 구성 파일 작성:

    • YAML: 간결성과 가독성을 중시.

    • 예: Docker Compose, CI/CD 도구 설정.

  3. 웹 애플리케이션 데이터 교환:

    • JSON: 간결하고 경량 데이터 전송에 최적화.

    • 예: RESTful API, 웹-서버 간 데이터 교환.


5. 요약

  • XML: 복잡한 데이터와 문서 관리에 적합.

  • YAML: 간단한 구성 파일과 설정 파일에 적합.

  • JSON: 경량 데이터 교환과 REST API에 최적화.

Previous서블릿 추가코드Next06 JSP(자바 서버 페이지)

Last updated 5 months ago