JavaScript/기타

Json 과 XML의 차이

TheWing 2021. 1. 3. 19:41

Json vs XML

XML(eXtensible Markup Language)

  • HTML과 매우 비슷한 문자 기반의 마크업 언어이다
  • 사람과 기계가 동시에 읽기 편한 구조로되어있다.
  • HTML처럼 데이터를 보여주는 목적이 아닌 데이터를 저장하고 전달하는 목적으로 만들어졌다.
  • XML 태그는 HTML 태그 처럼 미리 정의 되어 있지 않고, 사용자가 직접 정의할 수 있다

JSON(JavaScript Object Notation)

  • 브라우저 통신을 위한 속성-값 또는 키-값 쌍으로 이루어진 데이터 포맷

JSON과 XML 공통점

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

JSON과 XML의 차이점

예제

XML 예제
<employees>
  <employee>
    <firstName>John</firstName> <lastName>Doe</lastName>
  </employee>
  <employee>
    <firstName>Anna</firstName> <lastName>Smith</lastName>
  </employee>
  <employee>
    <firstName>Peter</firstName> <lastName>Jones</lastName>
  </employee>
</employees>
JSON 예제
{"employees":[
  { "firstName":"John", "lastName":"Doe" },
  { "firstName":"Anna", "lastName":"Smith" },
  { "firstName":"Peter", "lastName":"Jones" }
]}

JSON의 사용 범위

  • XML 문서는 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다. JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML보다 더욱 빠른 처리 속도를 보여준다
  • 따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용된다
  • JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야한다
  • 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증할 수 있는 XML이 아직도 사용된다.

JSON의 특징

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

XML의 특징

  • XML 태그는 미리 정의되어 있지 않다. 사용자 정의 태그를 정의해야한다
  • 사람이 이해하기 쉽다
  • 구조화 된 형식은 프로그램에서 읽고 쓰기가 쉽다
  • XML은 HTML과 같은 확장 가능한 마크업 언어이다
  • 데이터를 전달하도록 설계 되어있고 데이터를 표시할 수 없다

JSON 장점

  • 모든 브라우저에 대한 지원 제공
  • 생성, 조작, 읽기 , 쓰기가 쉽다
  • 구문이 간단
  • javascript에서 기본적으로 인식되고 javascript 함수인 eval() 로 구문 분석이 가능하다
  • 직렬화가 가능하다
  • JavaScript 의 모든 객체를 JSON으로 변환하여 JSON을 서버로 보낼 수 있는 텍스트이다

XML 장점

  • 시스템 및 애플리케이션간에 문서 전송이 가능하다.
  • 서로 다른 플랫폼 간에 데이터 교환이 가능하다
  • HTML에서 데이터를 분리한다
  • 플랫폼 변경 프로세스를 단순화한다

JSON의 단점

  • 네임 스페이스 지원이 없다. ( 확장성이 부족)
  • 형식적인 문법 정의 지원( 문법을 지켜야한다)
  • 제한된 개발 도구 지원

XML의 단점

  • 처리 응용 프로그램이 필요하다
  • 내장 데이터 유형 지원이 없다
  • XML 구문이 중복된다
  • 사용자가 자신의 태그를 생성하는 것을 허용하지 않는다
  • 텍스트 기반 데이터 전송 형식과 유사하다