일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- userdetailsservice 설정
- 오버로딩
- 티스토리챌린지
- 개인정보 수집 유효기간 자바
- 오블완
- spring security 설정
- CPU
- 멀티프로세싱
- 리눅스
- spring security 커스텀
- java
- 자바의 정석
- spring security
- hackerrank
- 바탕화면 정리 자바
- 로그인 핸들러 구현
- 자바의정석
- 다형성
- over()
- 프로그래머스
- 입출력
- 객체지향
- 캡슐화
- 오버라이딩
- 혼공얄코
- 달리기 경주 자바
- 쿠키
- SQL Mapper
- authenticationprovider 설정
- 멀티태스킹
- Today
- Total
쉽게 쉽게
XML, JSON 본문
공부한 개발 관련 지식을 정리하며 쓴 글입니다.
XML과 JSON은 데이터를 저장하고 전달하기 위해 고안되었다고 전 포스팅에서 언급했다.
둘의 차이점과 특징에 대해 작성해 본다.
1. XML(eXtensible Markup Language)
XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어다.
마크업 언어(markup 言語, markup language)는 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지이다.
사람과 기계가 동시에 읽기 편한 구조로 되어있다.
HTML처럼 데이터를 보여주는 목적이 아닌 데이터를 저장하고 전달하는 목적으로 만들어졌다.
XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있어 확장성이 좋다.
XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.
구현 예제
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-생략-
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
-생략-
위에 예제는 전자정부프레임워크 example을 가져온 것이다.(그냥 XML 구조적인 부분에 대한 참고 자료로 가져온 것)
XML 문서는 다음과 같이 자신에 대한 정보 일부를 선언하는 것으로 시작된다.
<?xml version="1.0" encoding="UTF-8" ?>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
위에 구조를 보면 몇 가지 특징을 알 수 있다.
특징
XML문서는 매우 규칙적, 예측이 가능한 구조이다.
모든 XML 요소는 종료 태그를 가져야 한다. 생략되면 오류가 발생한다.
대소문자를 구분하여 대소문자가 다르면 다른 요소로 인식한다.
시작태그와 종료태그의 문자가 동일해야 한다. 앞에는 소문자 뒤에는 대문자 불가
XML은 띄어쓰기를 인식한다.
이런 특징을 통해 아래처럼 데이터를 전달할 수 있다.
<name>
<firstName>Park</firstName>
<lastName>Soo</lastName>
</name>
XML 장점
- 시스템 및 애플리케이션 간에 문서 전송이 가능하다.
- 서로 다른 플랫폼 간에 데이터 교환이 가능하다
- HTML에서 데이터를 분리한다
- 플랫폼 변경 프로세스를 단순화한다
XML 단점
- 장황하고 복잡하다.
- 프로그래밍 언어나 데이터베이스의 시스템을 입력하기 위해 XML을 맵핑(Mapping)하기가 어렵다. 데이터가 특정 애플리케이션에 맞춰 구조화된 경우에는 더 까다롭다.
- 많은 태그 때문에 문자량이 늘어나 응답 시간이 느리다.(XML 구문이 중복된다.)
이를 극복하고자 나타난 것이 JSON이다.
2. JSON(JavaScript Object Notation)
특징
JSON은 속성-값 또는 키-값 쌍으로 이루어진 데이터 포맷이다.
JSON은 의도적으로 간결함과 집중을 추구했다.
JSON은 자바스크립트로 작성되었다. 본래 자바스크립트와의 손쉬운 상호운용성을 위해 자바 스크립트에서 사용하는 문법을 그 자체의 데이터 형식으로 뽑아내도록 정의되었다.
XML 문서는 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다. 그러나 JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱 하므로, XML보다 더욱 빠른 처리 속도를 보여준다.(빠른 응답이 필요한 웹 환경에서 많이 사용)
JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다
데이터의 검증이 필요한 곳에서는 데이터의 무결성을 검증할 수 있는 XML이 아직도 사용된다.
구현 예제
// 숫자 (number)
{ k : 1 }
//문자열 (string)
{ k : "str" }
//불리언(boolean)
{ k : true }
//객체(object)
{ k : {key : "value" } }
//배열(array)
{ k : ["일", "이"] }
//널(NULL)
{ k : null }
키-값 형식으로 xml보다 다양한 데이터 타입을 사용할 수 있다.
JSON 장점
- 모든 브라우저에 대한 지원 제공한다.
- 생성, 조작, 읽기 , 쓰기가 쉽다.
- 내용이 함축적으로 최소한의 정보만을 가지고 있다.
- XML에 비해 용량이 줄어들고 그만큼 빠른 속도가 빠르다.
- javascript에서 기본적으로 인식되고 javascript 함수인 eval()로 구문 분석이 가능하다.
- 직렬화가 가능하다.
- JavaScript의 모든 객체를 JSON으로 변환하여 JSON을 서버로 보낼 수 있는 텍스트이다.
JSON 단점
- 네임 스페이스 지원이 없다. ( 확장성이 부족)
- 형식적인 문법 정의 지원( 문법을 지켜야 한다)
- 제한된 개발 도구 지원
- 내용이 함축적이다 보니 의미 파악이 힘들 수가 있다.
- 경량의 데이터 교환 형식이기 때문에 XML보다 빠르지만, 대용량급의 데이터 송수신에는 부적합한 모습도 있다.
3. JSON과 XML 차이점 요약
JSON은 XML보다 여러 장점을 가진다.
XML의 경우 데이터를 구조화하고 데이터의 XML화 방식에 따라 문서와 코드 작성법을 미리 생각해야 하지만 JSON은 완전히 유연하다.(간결, 유연)
XML 기반 앱을 구조화하려면 문서 유형 정의를 비롯해 많은 사전 작업이 필요하다.
반면 JSON은 자바스크립트에서 객체를 정의하고 실행 중 어떤 속성이든 추가할 수 있다. (초기 작업이 단순)
내용이 함축적으로 최소한의 정보만을 가지고 있어 속도가 빠르다.(속도가 빠름)
하지만 XML이 여전히 사용되는 이유도 존재한다.
JSON은 실행 중 예상하지 못했던 데이터를 얻게 된다는 불안감이 있지만 XML은 아예 이를 허용하지 않는다.
XML에는 데이터 사용 사례를 중심으로 많은 표준이 존재한다.
대용량급 송수신에는 XML이 더 적합하다.
참고한 글입니다.
'CS > CS' 카테고리의 다른 글
멀티태스킹, 멀티프로세싱, 멀티스레딩 (1) | 2023.05.07 |
---|---|
컴퓨터 구성요소 (0) | 2023.05.07 |
API, REST, REST API (0) | 2023.04.01 |
쿠키, 세션, 토큰, 캐시 (0) | 2023.03.26 |
서버 서비스 구조와 관련 용어 (0) | 2023.03.15 |