[네트워크] JSON & XML
[네트워크] JSON & XML
네트워크 통신을 구현하다 보면 JSON 이나 XML 이란 단어를 들어보신 적이 있을겁니다.
둘은 모두 데이터를 저장하고 교환하기 위한 표준이며, 오늘은 이 둘에 대해 알아보도록 하겠습니다.
JSON 이란?
JSON 은 Javascript Object Notation 의 약자로 데이터를 쉽게 저장하고 전달하기 위해 만들어진 텍스트 기반의 데이터 교환 표준입니다.
XML 의 대안으로써 조금 더 데이터를 쉽게 교환하고 저장하기 위해 고안되었습니다.
JSON 은 Javascript 를 확장하여 만들어졌기 때문에 Javascript 객체 표기법을 따르며, key-value 쌍을 가지고 있습니다.
JSON 은 다음 예시와 같이 사용됩니다.
{
"language": [
{
"name": "Swift",
"category": "mobile",
"developer": "Apple"
},
{
"name": "Javascript",
"category": "web",
"developer": "ECMAÏ"
},
{
"name": "Java",
"category": "application",
"developer": "Oracle"
}
]
}
JSON 의 특징은 다음과 같습니다.
- 쉽게 데이터를 교환하고 저장하기 위해 만들어진 데이터 교환 표준
- Javascript 를 확장하여 만들어짐
- Javascript 객체 표기법을 따름
- 사람과 기계 모두 읽기 편하도록 설계됨
- 텍스트 기반으로 프로그래밍 언어와 운영체제에 독립적
JSON 자료형
JSON 은 다음과 같은 자료형들을 저장할 수 있습니다.
- Number
- String
- Boolean
- Array
- Object (정렬되지 않은 key-value 쌍 컬렉션)
- null
XML 이란?
XML 은 Extensible Markup Language 의 약자로 JSON 과 마찬가지로 데이터 교환을 위해 만들어진 언어입니다.
XML 은 Markup Language 이지만 다른 HTML 과는 달리 데이터를 저장하고 전달할 목적으로만 고안되었으며, 저장되는 데이터의 구조를 기술하기 위해 만들어진 언어입니다.
여러 종류의 데이터를 저장해야 하기 때문에 다른 마크업 언어와는 달리 태그가 미리 정의되어있지 않으며, 새로운 태그를 만들어 추가해도 계속해서 동작하기 때문에 확장성이 좋다는 특징이 있습니다.
XML 은 다음과 같은 예시로 사용됩니다.
<dog>
<name>식빵</name>
<family>웰시코기<family>
<age>1</age>
<weight>2.14</weight>
</dog>
XML 의 특징을 정리하자면 다음과 같습니다.
- 다른 시스템끼리 다양한 종류의 데이터를 교환할 수 있도록 해줌
- 다른 목적의 마크업 언어를 만드는데 사용되는 다목적 마크업 언어
- 데이터를 보여주지 않고 전달하고 저장하는 것만을 목적으로 함
- 태그가 미리 정의되어 있지 않고 새로운 태그를 추가해도 계속해서 동작함
- 텍스트 데이터 형식의 언어로 XML 문서는 유니코드 문자로만 구성됨
- 텍스트 기반으로 프로그래밍 언어와 운영체제에 독립적
JSON & XML 공통점과 차이점
공통점
- 사람과 기계가 동시에 읽기 편한 구조로 되어있음
- 데이터를 저장하고 전달하기 위해 고안됨
- 계층적인 데이터 구조를 가지고 있음
- 텍스트 기반으로 프로그래밍 언어와 운영체제에 독립적
- XMLHTTPRequest 객체를 이용해 서버로부터 데이터를 전송받을 수 있음
차이점
- JSON 은 종료 태그를 사용하지 않음
- JSON 구문이 더 짧음
- JSON 의 속도가 더 빠름
- XML 문서는 XML DOM 을 이용해 문서에 접근
- JSON 은 문자열을 전송받은 후에 바로 해당 문자열을 파싱하기 때문에 XML 보다 처리속도가 빠름
- 빠른 응답이 필요한 웹 환경에서 많이 사용
- XML 에서는 배열 사용 불가
- XML 은 XML 파서로, JSON 은 Javascript 표준 함수인 eval() 함수로 파싱됨
- JSON 은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 하지만, XML 은 스키마를 사용해 데이터 무결성을 검증할 수 있음
- 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것
참고 링크
http://www.tcpschool.com/json/intro