본문 바로가기

#Java

JSON / XML 이란 무엇일까? (부제: literal / property란 무엇일까?)

반응형

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의 계층 구조?)  (1) 2022.12.26
Java란 무엇인가?  (0) 2022.12.22