본문 바로가기

IT/JavaScript

JSON(JavaScript Object Notation) 이란?

반응형

JSON(JavaScript Object Notation) 이란?



출처: https://ko.wikipedia.org/wiki/JSON



JSON 정의


JAVASCRIPT  OBJECT *NOTATION (자바스크립트 객체 표기법)


JSON (JavaScript Object Notation)
은 경량의 DATA-교환 형식


사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이


속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷


비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷


자바스크립트 언어로부터 파생됐지만 프로그래밍 언어나 플랫폼에 독립적


데이터의 용량이 작다 -> 최근 JSON XML을 대체해서 설정의 저장이나 데이터를 전송등에 많이 사용됨


데이터를 받아서 객체나 변수에 할당해서 사용하기 위한 것


AJAX를 사용해 데이터를 주고받을 때 그 데이터 포맷으로 JSON을 사용하게 됨


쉽게 말하면 데이터를 교환하는 문자열 약속 같은것 -> 변수 데이터를 주고 받기를 목적으로한 프로토콜이라고 이해해도 될듯


구조화되지 않은 NoSQL database이고, Client Side MVC


JSON은 주로 서버와 Web Application간의 데이터 전송에 사용


JavaScript에서 숫자와 Array등을 만드는 형식을 차용해서 이것을 다른 언어에서도 사용할 수 있도록 한 텍스트 형식


XML보다 기능이 적고 파싱도 빠르고 간단하기 때문에 클라이언트 쪽(모바일) 더욱 유용하다


JSON 사용의 주목적은 이기종간의 데이터 교환

Java 서버<-> JavaScript, Java 서버 <-> App

JavaScript PHP는 서로 다른 언어 -> 그렇기 때문에 Object Array를 주고 받는 것이 쉽지 않음

이럴 때 JSON을 사용하면 편리

 

JSON 문법


기본 자료형

 

(Number) - 8진수와 16진수를 표현하는 방법은 지원되지 않음


정수 / 실수(고정 소수점) / 실수(부동 소수점) 세 가지 형식


정수

42

1974

750

-114

-273

실수(고정 소수점)

3.14

-2.718

실수(부동 소수점)

1e4

2.5e12

3.4e+4

4.56e-8

5.67E+10

6.78E-5


문자열(String) - 0개 이상의 유니코드 문자들의 연속 

문자열은 큰 따옴표(")로 구분하며 역슬래시 이스케이프 문법을 지원


항상 큰 따옴표(")로 묶어야 하며, 그 안에는 유니코드 문자들이 나열됨

유니코드 중 역슬래시(\)와 큰따옴표(")는 바로 사용할 수 없다

역슬래시는 제어문자를 표현하기 위해 사용되며 다음과 같은 의미를 지님

 

\b 백스페이스

\f 폼 피드

\n 개행

\r 캐리지 리턴

\t

\" 따옴표

\/ 슬래시

\\ 역슬래시

\uHHHH 16진수 네자리로되어 있는 유니코드 문자

 

문자열 표현 형태


"1234"

"Love"

"O-matic"

"한글"

"\"JSON\""

 

/거짓(Boolean) - true 또는 false


배열(Array) - 0 이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트

대괄호로 나타내며 요소는 쉼표로 구분


객체(Object) - 순서가 없는 이름/값 쌍의 집합으로, 이름()이 문자열

객체는 이름/값 쌍의 집합으로, 중괄호{}를 사용

이름은 문자열이기 때문에 반드시 따옴표를 하며, 값은 기본 자료형 / 각 쌍들은 쉼표(,)로 구별

 

null - 빈 값으로, null을 사용한다.


JSON 장점


JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다


프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다


자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용할 수 있다

->자바스크립트를 자주 사용하는 웹 환경에서 유리

but 실질적으로 eval 명령을 사용하면 외부에서 악성 코드가 유입될 수 있다

->모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이 될 수 있다

->자바스크립트에서 기본적으로 JSON을 지원하므로 별도의 라이브러리는 필요없으나 JSON의 한계로 인해 따로 라이브러리를 사용하는 경우가 많고 자바스크립트 이외의 환경에서도 JSON을 간단히 사용하기 위한 라이브러리들이 존재함


XML보다 기능이 적기 때문에 파싱도 빠르고 간단하기 때문에 클라이언트 사이드, 특히 모바일에서 더욱 유용

 

JSON 단점


AJAX로 전송된 JSON은 단순 데이터만이 아니라 Javascript 자체도 전달할 수 있다


JSON 데이터를 전달했을 때 그것이 단순 데이터가 아니라 자바스크립트가 될 수도 있다(악성스크립트 일 수 있는 것)

->그러므로 JSON 관련 라이브러리를 따로 사용하게 된다(받은 JSON 데이터에서 순수하게 데이터만 추출하기 위함)

  

JSON 방식으로 데이터를 받았을 때 그 내용을 깔끔하게 보는 법


CHROME 에서 제공하는 JSONVIEW나 PostMan을 이용해보자

->지저분하게 메모장에 한 줄로 나열되지 않고 깔끔하게 나열 된다


참조

https://www.json.org/json-ko.html

https://ko.wikipedia.org/wiki/JSON

https://opentutorials.org/course/1375/6844

 

반응형