JSON / XML 이란 무엇일까? (부제: literal / property란 무엇일까?)
[작성자의 다른 글 보러가기: 'REST란? REST API란? RESTful이란?']
개요
코딩 공부를 하면서 평소에 익히 많이 들어봤던 JSON.. 역시나 누군가에게 설명해줘야 한다면 쉽사리 말이 잘 나오지 않는 용어일 수 있다. 그래서 오늘은 JSON에 대해 알아보며 공부해보도록 하기위해 피드를 작성해본다.
목차
1. JSON의 정의
2. literal이란?
3. property란?
4. JSON의 특징
5. JSON 예제
6. XML과 JSON의 차이
# JSON의 정의
JSON이란 JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA교환형식이다.
JSON은 자바스크립트의 객체를 만들 때 리터럴(Literal)과 프로퍼티(Property)를 표현한다. 따라서 JSON데이터는 모양과 규칙이 매우 단순하다. 그래서 브라우저 영역에서 쉽고 빠르게 의미를 해석할 수 있으며, 다른 프로그래밍 언어에서도 구현하기 쉽다. JSON은 데이터 포맷일 뿐이라서 어떤 통신도 프로그래밍 문법도 아닌 단순한 데이터를 표시하는 표현 방법일 뿐이다.
# literal이란?
리터럴(Literal)은 데이터(값) 그 자체를 뜻한다. 변수에 넣는 변하지 않는 데이터를 의미한다.
- ex> 20 //숫자리터럴 , "JSON은" // 문자열리터럴 , true // 불리언 리터럴
리터럴 표기법이란, 변수를 선언함과 동시에 그 값을 지정해주는 표기법이다.
- ex> const a = 1; // 객체리터럴
const a 에서 a는 상수이고 1은 리터럴 이다.
즉, 상수는 메모리 공간이며 메모리 값을 변경할 수 없다.
리터럴은 메모리 안에 저장되는 값이다.
# 프로퍼티(Property)이란?
기본적으로 property란 어떤 값을 나타낸다. 그런데 이 값이 다른 값과 연관되어 있을 때 property라고 부른다.
예를 들어 문자열에는 length라는 property가 포함되어 있는데 이 프로퍼티는 문자열 안에 있는 문자의 양을 정수로 나타낸 값을 담고 있다.
ex> const str = '문자수';
//str 문자열 객체의 length 프로퍼티를 출력
console. log(str.length);
// 출력된 값 = 3
# Json의 특징
- 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다.
- 자바스크립트 객체의 형식을 기반으로 만들어져서 표기법과 아주 유사하다.
- 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
- 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있다.
- 다른 프로그래밍 언어를 이용해도 쉽게 만들 수 있다.
- 특정 언어에 종속되지 않으며, 프로그래밍 언어에서 JSON포맷 데이터를 핸들링 할 수 있는 라이브러리를 제공
# Json 예제
JSON의 기본적인 형태는 아래와 같다.
1.
{ key : value }
JSON의 형태는 키(Key)와 값(value)의 쌍으로 이루어져 있는 구조입니다.
그리고 Key와 Value사이에는 콜론(:)이 들어가게 됩니다.
2.
{key1 : value, key2 : value2}
여러 데이터를 나열할 경우 쉼표( , )를 사용합니다.
3.
{ key1 : { inKey : inValue }, key2 : [arr1, arr2 arr3] }
{"판매자정보" : { "이름" : "남도일", "지역" : "서울" } , "판매품목" : ['사과','배','딸기'] }
객체(Object)는 중괄호( { } )로 묶어서 표현하고, 배열(Array)은 대괄호( [ ] )로 묶어서 표현합니다.
4.
[ 1, "str", true, {inKey : "value"}, ["일", "이"], null ]
// 숫자 (number)
{ k : 1 }
//문자열 (string)
{ k : "str" }
//불리언(boolean)
{ k : true }
//객체(object)
{ k : {inKey : "value" } }
//배열(array)
{ k : ["일", "이"] }
//널(NULL)
{ k : null }
데이터의 값으로 다양한 타입을 사용할 수 있습니다.
값 | 타입 |
1 | 숫자(number) |
"str" | 문자열(string) |
true | 불리언(boolean) |
{inKey : value} | 객체(object) |
["일", "이"] | 배열(array) |
null | 널(NULL) |
# XML과 JSON을 비교해보자
# XML이 무엇인지 먼저 알아보자
- XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어
- XML은 EXtensible Markup Language의 약자로, 수많은 응용분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다.
- XML을 배우기 전에 HTML, 자바스크립트 등의 기초 지식이 필요
# XML의 특징
- XML은 다른 목적의 마크업 언어를 만드는데 사용되는 다목적 마크업 언어
- XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해줌
- XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로 확장성이 좋음
- XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 함
- XML은 텍스트 데이터 형식의 언어로 모든 XML문서는 유니코드 문자로만 이루어짐
# JSON과 XML의 공통점
- 둘 다 데이터를 저장하고 전달하기 위해 고안되었음
- 둘 다 기계뿐만 아니라 사람도 쉽게 읽을 수 있음
- 둘 다 계층적인 데이터 구조를 가짐
- 둘 다 다양한 프로그래밍 언어에 의해 파싱될 수 있음
- 둘 다 XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있음
# JSON과 XML의 차이점
- JSON은 종료 태그를 사용하지 않음
- JSON의 구문이 XML의 구문보다 더 짦음
- JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있음
- XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있음
- XML은 XML파서로 파싱되며, JSON은 자바스크립트 표준 함수인 eval()함수로 파싱됨
- XML문서는 XML DOM을 이용하여 해당문서에 접근하지만 JSON은 문자열을 전송받은 후에 해당문자열을 바로 파싱하므로, XML보다 더욱 빠른 처리속도를 보여줌. 따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹환경에서 많이 사용됨.
- JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야함. 따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결설을 검증할 수 있는 XML이 아직도 많이 사용됨
XML 예제
식빵
웰시코기
1
2.14
위의 예제를 JSON 혀앹의 데이터로 바꾸면 다음과 같다.
JSON 예제
{
"name": "식빵",
"family": "웰시코기",
"age": 1,
"weight": 2.14
}
'#Java' 카테고리의 다른 글
Spring에 대해 알아보자 (#MVC패턴? / #Spring의 계층 구조?) (2) | 2022.12.26 |
---|---|
Java란 무엇인가? (0) | 2022.12.22 |