XML과 JSON

HyunJung Song·2022년 1월 16일
0

Web

목록 보기
2/3
post-thumbnail

XML(eXtensible Markup Language)

1998년 W3C 표준 권고안에 포함된 문자 기반의 마크업 언어.
XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 데이터의 구조를 기술하기 위한 언어이다.
사람과 기계가 동시에 읽기 편한 구조로 되어 있으며, HTML과는 다르게 태그가 미리 정의되어 있지 않고 사용자가 직접 정의할 수 있다.

<?xml version="1.0" encoding="UTF-8" ?>
<users>
  <user>
    <name>안개</name>
    <age>20</age>
  </user>
  <user>
    <name>챠니</name>
    <age>20</age>
  </user>
  <user>
    <name>siner</name>
    <age>20</age>
  </user>
</users>

XML 구조

XML 문서는 HTML 문서처럼 트리(tree) 형태의 계층 구조를 가진다.

  • 하나뿐인 루트(root)요소부터 시작하여 각각의 자식(child)요소에 차례대로 연결되며 모든 요소는 자신만의 자식요소를 가질 수 있다.
  • 부모(parent)요소는 여러 개의 자식요소를 가질 수 있지만 자식요소는 하나의 부모요소만을 가진다.
  • 같은 트리 레벨에 존재하는, 같은 부모요소를 가진 자식요소들 간의 관계는 형제요소라고 한다.

XML 특징

  • 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
  • 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있다.
  • 운영체제나 프로그램, 브라우저 등에 상관없이 다양한 종류의 데이터를 손쉽게 교환할 수 있다.
  • 새로운 태그를 만들어 추가할 수 있어서 확장성이 좋다.
  • 데이터를 보여주는 것이 아닌, 전달하고 저장하는 것만을 목적으로 한다.
  • 텍스트 데이터 형식의 언어로 유니코드 문자로만 이루어진다.

JSON(JavaScript Object Notation)

2009년 더글라스 크록포드(Douglas Crockford)가 처음으로 규정.
현재 RFC7159ECMA-404의 경쟁 표준에 의해 규정되고 있다.
쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준.
자바스크립트를 기반드로 만들어졌으며, 텍스트 기반이므로 다른 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있다.

{"users" : [
  {"name" : "안개", "age" : 20},
  {"name" : "챠니", "age" : 20},
  {"name" : "siner", "age" : 20}
]}

JSON 구조

  • key:value 쌍으로 이루어진 데이터 형식이다.
  • 데이터는 쉼표,로 나열이 된다.
  • 객체는 중괄호{}에 넣어 표시한다.
  • 배열은 대괄호[]에 넣어 표시한다.
  • 사용되는 자료형
    • 숫자(number)
    • 문자열(string)
    • 불리언(boolean)
    • 객체(object)
    • 배열(array)
    • NULL

JSON 특징

  • 구문이 간단하며 사용하기가 쉽다.
  • 모든 브라우저에 대한 지원을 제공한다.
  • 적은 메모리 공간을 사용하기 때문에 빠르다.
  • 맵핑을 생성하지 않아도 된다.
    • Jackson API가 직렬화 할 여러 개체에 대한 기본 매핑을 제공한다.
  • 종속성
    • JSON을 처리하기 위해 다른 라이브러리가 필요하지 않다.

XML vs JSON

공통점

  1. 데이터를 저장하고 전달하기 위해 고안되었다.
  2. 기계뿐만 아니라 사람도 쉽게 읽을 수 있다.
  3. 계층적인 데이터 구조를 가진다.
  4. 다양한 프로그래밍 언어에 의해 파싱될 수 있다.
  5. XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.

차이점

차이점JSONXML
닫는 태그와 주석사용 안함사용함
구문 길이짧다길다
읽기/쓰기 속도빠르다느리다
네임 스페이스제공 안함제공함
배열사용 가능사용 불가능
파싱Java script 표준 함수 eval() 함수로 파싱XML 파서로 파싱
데이터 표시없음제공
데이터의 무결성사용자 직접 검증스키마를 이용하여 검증
인코딩UTF-8다양한 인코딩 형식을 지원한다.
profile
30분이라도 매일 👩🏻‍💻

0개의 댓글