거의 모든 SW 개발의 필수⋯ JSON 데이터 포맷의 이해
페이지 정보
본문
JSON은 JavaScript Object Notation의 약어로, 데이터를 표현하는 데 사용되는 형식이다.
2000년대 초반 자바스크립트의 일부로 등장했고 점점 확장돼 텍스트 기반 데이터를 기술하고 교환하는 가장 보편적인 매체로 발전했다. 현재 JSON은 데이터 교환의 범용 표준이며 프론트 엔드와 서비스 측 개발, 시스템, 미들웨어, 데이터베이스를 포함해 프로그래밍의 모든 영역에 사용된다. 여기서는 JSON 기술의 개요를 알아보고 XML, YAML, CSV와 같은 비슷한 표준과 비교한다. 다양한 프로그램과 사용 사례에서 JSON이 어떻게 쓰이는지도 살펴본다.
JSON의 역사
처음에 JSON은 자바스크립트 클라이언트와 백엔드 서버 간의 통신을 위한 형식으로 개발됐다. 이후 프론트 엔드 프로그래머가 간결한 표준화된 형식을 사용해 백엔드와 통신하는 데 사용할 수 있는, 사람이 읽을 수 있는 형식으로 빠르게 인기를 끌었다. 개발자 관점에서 JSON의 또 다른 장점은 유연성이다. 높은 유연성 덕분에 즉석에서 필드를 추가, 제거, 업데이트할 수 있다(단, 이 유연성의 대가는 안전성이다. 이 부분에 관해서는 JSON 스키마를 다루면서 한 번 더 설명한다.)
흥미롭게도 JSON의 인기를 촉발한 것은 AJAX 혁명이다. XML에 중점을 뒀다는 사실을 감안하면 이상한 일이지만, AJAX가 제대로 빛을 발하게 해준 것은 사실 JSON이었다. API를 위한 규약으로 REST를 사용하고 교환 매체로 JSON을 사용하는 방법이 간소함과 유연함, 일관성의 적절한 조합이라는 것이 입증된 것이다.
이후 JSON은 프론트 엔드 자바스크립트에서 클라이언트-서버 통신으로 확산했고, 거기서 다시 시스템 구성 파일, 백엔드 언어에 이어 데이터베이스에까지 이르렀다. JSON은 데이터 저장 분야에서 혁신을 일으킨 노SQL 운동에 박차를 가한 역할도 했다. 데이터베이스 관리자 역시 JSON의 유연함과 손쉬운 프로그래밍을 반겼다.
현재 몽고DB와 같은 문서 지향 데이터 스토어는 JSON과 유사한 데이터 구조에서 작동하는 API를 제공한다. 몽고DB CTO 마크 포터는 최근 인터뷰에서 JSON이 여전히 새로운 데이터 영역을 개척하고 있다고 했다. 중괄호와 콜론으로 소소하게 시작한 데이터 형식으로서는 나쁘지 않은 성과다.
개발자가 JSON을 사용하는 이유
소프트웨어 개발자는 어떤 유형의 프로그램 또는 사용 사례를 다루든 데이터를 기술하고 교환할 방법이 필요하다. 이 필요성은 데이터베이스, 비즈니스 로직, 사용자 인터페이스, 그리고 모든 시스템 통신에 존재한다. 교환을 위해 데이터를 구조화하는 방법은 많은데 크게 바이너리와 텍스트 기반 데이터, 두 진영으로 나뉜다. JSON은 텍스트 기반 형식이므로 사람과 기계가 모두 읽을 수 있다.
JSON은 여러 이유로 매우 성공적인 데이터 형식 지정 방법이다. 첫째, 자바스크립트에 네이티브이며 자바스크립트 프로그램 내부에서 JSON 리터럴로 사용된다. 또한 다른 프로그래밍 언어와 함께 JSON을 사용할 수 있으므로 이종 시스템 간의 데이터 교환에 유용하다. 마지막으로 JSON은 사람이 읽을 수 있다. 언어 데이터 구조로서 JSON은 매우 다재다능한 툴이며 특히 다른 형식과 비교할 때 사용상에 불편한 점이 거의 없다.
JSON의 작동 원리
웹 페이지의 양식에 사용자 이름과 암호를 입력하면 사용자 이름과 암호, 두 개의 필드가 있는 하나의 객체와 상호작용하는 것이다. 예를 들어 <화면 1>의 로그인 페이지를 보자. <예시 1>은 JSON을 사용해 이 페이지를 기술한 것이다.
중괄호({...}) 내에 포함된 것은 모두 같은 객체에 속한다. 여기서 객체는 일반적인 맥락에서 '하나의 사물'을 나타낸다. 중괄호 안에는 이 사물에 속하는 속성이 있다. 각 속성에는 이름과 값, 두 부분이 콜론으로 구분돼 포함된다. 이것을 키와 값이라고 한다. <예시 1>에서 “username”이 키, “Bilbo Baggins”가 값이다. 참고로 속성, 필드, 특성 등의 요소는 JSON 개체의 부분을 나타내는 데 사용된다. 기술적으로 보면 객체 지향 프로그래밍 언어 맥락에서 이와 같은 요소를 멤버(member)라고 한다. 각 속성과 필드 또는 특성은 객체의 멤버다.
<예시 1>에서 핵심은 JSON이 많은 부가 정보 없이 필요한 모든 작업(이 예의 경우 정보를 양식에 저장하는 것)을 수행한다는 것이다. 이 JSON 파일은 한눈에 이해할 수 있다. 그래서 JSON을 두고 간결하다고 말하는 것이다. 간결함은 네트워크 전송을 위한 형식으로도 적합한 특성이다.
... 중략 ...
JSON vs. YAML vs. CSV
JSON과 종종 비교되는 두 데이터 형식은 YAML과 CSV다. 이 두 형식은 시간 스펙트럼의 양극단에 위치한다. CSV는 디지털 시대 이전의 옛 기술이지만 어떻게 하다 보니 컴퓨터에까지 도입됐으며 YAML은 JSON의 영향을 받아 탄생했고 개념적으로 JSON의 후손이라고 할 수 있다.
CSV는 단순한 값 목록이며 각 항목은 쉼표 또는 다른 구분 문자로 나타내고 첫 번째 헤더 필드 행은 선택적이다. 교환 매체 및 프로그래밍 구조로 제한되지만, 대량의 데이터를 디스크로 출력하는 데는 여전히 유용하다. 물론 CSV의 테이블 형식 데이터 구조는 스프레드시트와 완벽하게 어울린다.
YAML은 사실상 JSON의 확대 집합으로, JSON이 지원하는 것은 모두 지원한다. 그러나 YAML은 그 외에 JSON보다 더 간결하게 만들어진 더 간소화된 구문도 지원한다. 예를 들어 YAML은 계층구조에 중괄호를 버리고 들여쓰기를 사용한다. YAML은 데이터 교환 형식으로 종종 사용되기도 하지만 가장 유명한 사용 사례는 구성 파일이다.
... 중략 ...
타입스크립트와 JSON 사용하기
타입스크립트는 형식과 인터페이스를 정의하도록 허용하므로 타입스크립트와 JSON을 함께 사용하는 것이 유용할 때가 있다. 클래스는 스키마와 마찬가지로 주어진 형식의 인스턴스의 허용 가능한 속성을 기술한다. 일반 자바스크립트의 경우 속성과 그 유형을 제한할 방법이 없다. 자바스크립트 클래스는 일종의 제안이다. 즉, 프로그래머는 지금 설정해놓고 나중에 JSON을 수정할 수 있다. 그러나 타입스크립트 클래스는 JSON이 가질 수 있는 속성과 될 수 있는 형식을 강제한다.
현대 소프트웨어 개발의 필수 기술
JSON은 현대 소프트웨어 분야에 사용되는 가장 필수적인 기술 중 하나다. 자바스크립트에서 중대하지만 광범위한 기술 간의 공통 상호작용 모드로도 사용된다. JSON을 이처럼 유용하게 만든 이유는 명확하다. 텍스트 데이터 표현을 위한 간결하고 가독성 높은 형식이기 때문이다.
참조 및 출처 :
JSON
https://ko.wikipedia.org/wiki/JSON
[Web]JSON이란? - JSON 구조, JSON 데이터 타입, JSON Array
https://lxxyeon.tistory.com/153
JSON으로 작업하기
https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON
JSON 구조
http://www.tcpschool.com/json/json_basic_structure
실전 예제: JSON 파일 읽고 쓰기
https://dojang.io/mod/page/view.php?id=720
JSON 이란 무엇인가? 간단 정리 및 예제를 통한 사용 방법
https://codingazua.tistory.com/4
JSON이란 무엇일까??
https://nesoy.github.io/articles/2017-02/JSON
감사합니다 :)
관련자료
-
심하다 싶으면… 02.05
나는 이런 글을 싸지르는 사람을 보면 아직도 빨 갱이가 어떠네, 좌 파가…
-
심하다 싶으면… 01.25
숭실대가 아니고 노인대학 인가 보지..
-
진실 01.24
일부 좌-파 상인들이 조작선동 하는장면 잘도 찍어서 조작선동하는군. 좌-…
-
어휴 01.13
빨-갱이새-끼 ㅉㅉ..
-
ㅇㅇ 01.08
마포갑은 김빈!! 응원합니다
-
이광진 12.31
안귀령님의 말솜씨가 예뿐 언굴과 같아 보기와 듣기가 좋았습니다. 엣말에 …
-
돌아이냐 12.30
머저리야! 죄명이는 2003년 7월 무고 공무원자격(검사)사칭과 관련 벌…
-
작가 이름 수… 12.16
권은지 x 권윤지 ㅇ
-
인마핱 12.16
비밀댓글입니다.
-
민주 11.29
실제 카카오톡 화면이 말하는사람이랑 듣는사람이랑 다 같은쪽에서 나와요? …
- 심하다 싶으면… 02.05 나는 이런 글을 싸지르는 사람을 보면 아직도 빨 갱이가 어떠네, 좌 파가…
- 심하다 싶으면… 01.25 숭실대가 아니고 노인대학 인가 보지..
- 진실 01.24 일부 좌-파 상인들이 조작선동 하는장면 잘도 찍어서 조작선동하는군. 좌-…
- 어휴 01.13 빨-갱이새-끼 ㅉㅉ..
- ㅇㅇ 01.08 마포갑은 김빈!! 응원합니다
- 이광진 12.31 안귀령님의 말솜씨가 예뿐 언굴과 같아 보기와 듣기가 좋았습니다. 엣말에 …
- 돌아이냐 12.30 머저리야! 죄명이는 2003년 7월 무고 공무원자격(검사)사칭과 관련 벌…
- 작가 이름 수… 12.16 권은지 x 권윤지 ㅇ
- 인마핱 12.16 비밀댓글입니다.
- 민주 11.29 실제 카카오톡 화면이 말하는사람이랑 듣는사람이랑 다 같은쪽에서 나와요? …