의견.png

"제이슨"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
잔글
1번째 줄: 1번째 줄:
[[파일:14636491710 d347ce16ae b.jpg|300픽셀|'''제이슨'''(JSON) 로고와 글자]]
+
[[파일:14636491710 d347ce16ae b.jpg|썸네일|300픽셀|'''제이슨'''(JSON) 로고와 글자]]
  
'''제이슨'''(JSON)은 JavaScript Object Notation의 약자로서, 자바스크립트(JavaScript) 토대로 개발되었다.  
+
'''제이슨'''(JSON)은 JavaScript Object Notation의 약자로서, [[자바스크립트]](JavaScript) 토대로 개발되었다.  
  
 
==개요==
 
==개요==
 
 
여러 프로그래밍 언어에도 사용할 수 있어 독립형 언어이며 텍스트로 기술하여 사람도 쉽게 읽고 작성할 수 있다. 웹 브라우저와 웹 서버 간 비동기 통신, 웹 서버 간의 데이터 교환 등에 주로 사용된다. IETF RFC 7159(The JavaScript Object Notation(JSON) Data Interchange Format) 표준과 ECMA-404(The JSON Data Interchange Syntax) 표준으로 제정되어 있다.
 
여러 프로그래밍 언어에도 사용할 수 있어 독립형 언어이며 텍스트로 기술하여 사람도 쉽게 읽고 작성할 수 있다. 웹 브라우저와 웹 서버 간 비동기 통신, 웹 서버 간의 데이터 교환 등에 주로 사용된다. IETF RFC 7159(The JavaScript Object Notation(JSON) Data Interchange Format) 표준과 ECMA-404(The JSON Data Interchange Syntax) 표준으로 제정되어 있다.
  
 
JSON은 자바스크립트(ECMA-262 3rd edition, 1999)를 토대로 개발되었으며, 2000년대 미국의 컴퓨터 프로그램 개발자인 더글라스 크락포드(Douglas Crockford)가 확산시켰다. 특히, 웹 브라우저에서 비동기 처리에 사용되는 에이잭스(AJAX)가 데이터 교환 형식으로 JSON을 사용하면서 널리 알려졌다. AJAX가 기존 사용하던 XML 기반의 메시지 포맷은 시작 태그와 끝 태그를 포함하여 메시지 크기가 커지는 문제가 있었다. 이를 해결하기 위해 JSON으로 대체하였다. 대부분의 웹 기반 애플리케이션에서 데이터 교환 형식으로 XML 대신 JSON을 활용한다.<ref name="JSON">〈[https://terms.naver.com/entry.nhn?docId=5714735&cid=42346&categoryId=42346 제이슨(JavaScript Object Notation)]〉《IT용어사전》, </ref>
 
JSON은 자바스크립트(ECMA-262 3rd edition, 1999)를 토대로 개발되었으며, 2000년대 미국의 컴퓨터 프로그램 개발자인 더글라스 크락포드(Douglas Crockford)가 확산시켰다. 특히, 웹 브라우저에서 비동기 처리에 사용되는 에이잭스(AJAX)가 데이터 교환 형식으로 JSON을 사용하면서 널리 알려졌다. AJAX가 기존 사용하던 XML 기반의 메시지 포맷은 시작 태그와 끝 태그를 포함하여 메시지 크기가 커지는 문제가 있었다. 이를 해결하기 위해 JSON으로 대체하였다. 대부분의 웹 기반 애플리케이션에서 데이터 교환 형식으로 XML 대신 JSON을 활용한다.<ref name="JSON">〈[https://terms.naver.com/entry.nhn?docId=5714735&cid=42346&categoryId=42346 제이슨(JavaScript Object Notation)]〉《IT용어사전》, </ref>
  
==등장배경==
+
==등장 배경==
  
1997년 동적인 HTML
+
* 1997년 동적인 HTML
 
동적으로 변하는 컨텐츠와 웹페이지의 외관을 만들 수 있게 되었다.
 
동적으로 변하는 컨텐츠와 웹페이지의 외관을 만들 수 있게 되었다.
 
따라서 페이지의 문서 객체 모델(DOM)을 다루어 컨텐츠와 스타일을 변화하고, 요소를 보여주거나 숨기는 것과 같은 것들을 가능하게 했다.
 
따라서 페이지의 문서 객체 모델(DOM)을 다루어 컨텐츠와 스타일을 변화하고, 요소를 보여주거나 숨기는 것과 같은 것들을 가능하게 했다.
 
동적인 HTML은 IE4와 넷스케이프 네비케이터4에서 처음 등장하였다.
 
동적인 HTML은 IE4와 넷스케이프 네비케이터4에서 처음 등장하였다.
1999년 XMLHttpRequest이 API는 클라이언트 측 스크립트를 http 또는 https로 서버에게 요청하고,
+
 
텍스트 형식으로(xml html json과 같은..) 데이터를 받는 것을 가능하게 했다.그것은 ie5에서 소개되었다.
+
* 1999년 XMLHttpRequest이 API는 클라이언트 측 스크립트를 http 또는 https로 서버에게 요청하고, 텍스트 형식으로(xml html json과 같은..) 데이터를 받는 것을 가능하게 했다.그것은 ie5에서 소개되었다.
2001년 JSON, 자바스크립트 기반의 데이터 교환 포맷
+
 
2001년 더글라스 크락포드는 lisp에서 아이디어를 얻어 텍스트 형식으로 데이터를 저장하는 자바스크립트 문법을 ‘JSON’이라 이름 붙이고 문서화했다.
+
* 2001년 JSON, 자바스크립트 기반의 데이터 교환 포맷
 +
 
 +
* 2001년 더글라스 크락포드는 lisp에서 아이디어를 얻어 텍스트 형식으로 데이터를 저장하는 자바스크립트 문법을 ‘JSON’이라 이름 붙이고 문서화했다.
 
JSON은 객체, 배열, 문자열, 숫자들, 불린 등을 구조적인 데이터로 표현하기 위해 자바스크립트 리터럴로 사용된다.<ref>Lee Sungyu, 〈[https://wit.nts-corp.com/2014/08/13/1925 [번역] 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13</ref>
 
JSON은 객체, 배열, 문자열, 숫자들, 불린 등을 구조적인 데이터로 표현하기 위해 자바스크립트 리터럴로 사용된다.<ref>Lee Sungyu, 〈[https://wit.nts-corp.com/2014/08/13/1925 [번역] 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13</ref>
 
  
 
==역사==
 
==역사==
29번째 줄: 29번째 줄:
 
*사람과 기계가 모두 읽기 편하도록 고안되었다.
 
*사람과 기계가 모두 읽기 편하도록 고안되었다.
 
*프로그래밍 언어와 운영체제에 독립적이다.
 
*프로그래밍 언어와 운영체제에 독립적이다.
 
 
  
 
==활용==
 
==활용==
 
 
JSON은 자바스크립트(JavScript)의 구문 형식을 따르지만, C, C++, C#, 자바(Java), 파이선(Python) 등의 프로그램 언어와도 함께 사용되는 플랫폼과 프로그래밍 언어 면에서 독립적인 언어이다. 데이터 구조는 속성(name)과 값(value) 한 쌍으로 구성되며, “속성: 값” 형식으로 데이터 객체를 표현한다. 값(value)의 자료형으로 수(number), 문자열(string), 객체(object), 배열(array), 참/거짓(boolean), 또는 빈값(null)이 지원된다. 배열(array)은 대괄호([ ])로, 객체는 속성 · 값 쌍의 집합으로 중괄호({ })를 사용하여 표현하며, 객체 간의 구분은 쉼표(,)로 한다.<ref name="JSON"></ref>
 
JSON은 자바스크립트(JavScript)의 구문 형식을 따르지만, C, C++, C#, 자바(Java), 파이선(Python) 등의 프로그램 언어와도 함께 사용되는 플랫폼과 프로그래밍 언어 면에서 독립적인 언어이다. 데이터 구조는 속성(name)과 값(value) 한 쌍으로 구성되며, “속성: 값” 형식으로 데이터 객체를 표현한다. 값(value)의 자료형으로 수(number), 문자열(string), 객체(object), 배열(array), 참/거짓(boolean), 또는 빈값(null)이 지원된다. 배열(array)은 대괄호([ ])로, 객체는 속성 · 값 쌍의 집합으로 중괄호({ })를 사용하여 표현하며, 객체 간의 구분은 쉼표(,)로 한다.<ref name="JSON"></ref>
  
41번째 줄: 38번째 줄:
  
 
===단점===
 
===단점===
 
+
* 문법 오류에 민감하다. 콤마가 누락되거나 중괄호가 잘못 닫히는 등 구두점에서 오타가 나면 전체 JSON파일이 망가진다.
*문법 오류에 민감하다. 콤마가 누락되거나 중괄호가 잘못 닫히는 등 구두점에서 오타가 나면 전체 JSON파일이 망가진다.
+
* 주석을 지원하지 않는다. 그래서 설정 파일을 JSON으로 작성하는 것은 어렵다.
*주석을 지원하지 않는다. 그래서 설정 파일을 JSON으로 작성하는 것은 어렵다.
+
* 데이터 타입을 강제할 수 없다. JSON 스키마로 보완은 가능하지만 데이터 스스로 자신의 타입을 기술할 방법이 없다.<ref name="JSON단점">〈[https://namu.wiki/w/JSON]〉《나무위키》</ref>
*데이터 타입을 강제할 수 없다. JSON 스키마로 보완은 가능하지만 데이터 스스로 자신의 타입을 기술할 방법이 없다.<ref name="JSON단점">〈[https://namu.wiki/w/JSON]〉《나무위키》</ref>
 
  
 
===대안===
 
===대안===
 
 
위와 같은 단점을 보완하고자 YAML 등의 대체 포맷을 쓰기도 하나 기계간 데이터 전송에 주로 쓰이는 JSON의 특성상 위의 단점은 큰 문제가 아니라서 JSON은 2017년 11월 현재도 XML과 대등하게 널리 쓰이고 있다.<ref name="JSON단점"></ref>
 
위와 같은 단점을 보완하고자 YAML 등의 대체 포맷을 쓰기도 하나 기계간 데이터 전송에 주로 쓰이는 JSON의 특성상 위의 단점은 큰 문제가 아니라서 JSON은 2017년 11월 현재도 XML과 대등하게 널리 쓰이고 있다.<ref name="JSON단점"></ref>
  
 
===장점===
 
===장점===
 
+
* JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다.
*JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다.
+
* 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.
*프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.
+
* 자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용할 수 있다. 이런 특성은 자바스크립트를 자주 사용하는 웹 환경에서 유리하다. 그러나 실질적으로 eval 명령을 사용하면 외부에서 악성 코드가 유입될 수 있다. 모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이다.<ref>〈[https://ko.wikipedia.org/wiki/JSON]〉《위키백과》</ref>
*자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용할 수 있다. 이런 특성은 자바스크립트를 자주 사용하는 웹 환경에서 유리하다. 그러나 실질적으로 eval 명령을 사용하면 외부에서 악성 코드가 유입될 수 있다. 모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이다.<ref>〈[https://ko.wikipedia.org/wiki/JSON]〉《위키백과》</ref>
 
  
 
==평가와 전망==
 
==평가와 전망==
61번째 줄: 55번째 줄:
  
 
==참고자료==
 
==참고자료==
* 네이버 지식 백과 홈페이지 - https://terms.naver.com/entry.nhn?docId=5714735&cid=42346&categoryId=42346
+
* 네이버 지식백과 홈페이지 - https://terms.naver.com/entry.nhn?docId=5714735&cid=42346&categoryId=42346
 
*  Lee Sungyu, 〈[https://wit.nts-corp.com/2014/08/13/1925 [번역] 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13
 
*  Lee Sungyu, 〈[https://wit.nts-corp.com/2014/08/13/1925 [번역] 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13
 
* 나무위키 공식 홈페이지 - https://namu.wiki/w/JSON  
 
* 나무위키 공식 홈페이지 - https://namu.wiki/w/JSON  
 
* 위키백과 공식 홈페이지 - https://ko.wikipedia.org/wiki/JSON
 
* 위키백과 공식 홈페이지 - https://ko.wikipedia.org/wiki/JSON
 +
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[자바스크립트]]
 
* [[자바스크립트]]
74번째 줄: 69번째 줄:
 
* [[Python]]
 
* [[Python]]
 
* [[PHP]]
 
* [[PHP]]
 +
 
{{로고 필요}}
 
{{로고 필요}}
 
{{프로그래밍 언어|토막글}}
 
{{프로그래밍 언어|토막글}}

2019년 7월 22일 (월) 23:22 판

제이슨(JSON) 로고와 글자

제이슨(JSON)은 JavaScript Object Notation의 약자로서, 자바스크립트(JavaScript) 토대로 개발되었다.

개요

여러 프로그래밍 언어에도 사용할 수 있어 독립형 언어이며 텍스트로 기술하여 사람도 쉽게 읽고 작성할 수 있다. 웹 브라우저와 웹 서버 간 비동기 통신, 웹 서버 간의 데이터 교환 등에 주로 사용된다. IETF RFC 7159(The JavaScript Object Notation(JSON) Data Interchange Format) 표준과 ECMA-404(The JSON Data Interchange Syntax) 표준으로 제정되어 있다.

JSON은 자바스크립트(ECMA-262 3rd edition, 1999)를 토대로 개발되었으며, 2000년대 미국의 컴퓨터 프로그램 개발자인 더글라스 크락포드(Douglas Crockford)가 확산시켰다. 특히, 웹 브라우저에서 비동기 처리에 사용되는 에이잭스(AJAX)가 데이터 교환 형식으로 JSON을 사용하면서 널리 알려졌다. AJAX가 기존 사용하던 XML 기반의 메시지 포맷은 시작 태그와 끝 태그를 포함하여 메시지 크기가 커지는 문제가 있었다. 이를 해결하기 위해 JSON으로 대체하였다. 대부분의 웹 기반 애플리케이션에서 데이터 교환 형식으로 XML 대신 JSON을 활용한다.[1]

등장 배경

  • 1997년 동적인 HTML

동적으로 변하는 컨텐츠와 웹페이지의 외관을 만들 수 있게 되었다. 따라서 페이지의 문서 객체 모델(DOM)을 다루어 컨텐츠와 스타일을 변화하고, 요소를 보여주거나 숨기는 것과 같은 것들을 가능하게 했다. 동적인 HTML은 IE4와 넷스케이프 네비케이터4에서 처음 등장하였다.

  • 1999년 XMLHttpRequest이 API는 클라이언트 측 스크립트를 http 또는 https로 서버에게 요청하고, 텍스트 형식으로(xml html json과 같은..) 데이터를 받는 것을 가능하게 했다.그것은 ie5에서 소개되었다.
  • 2001년 JSON, 자바스크립트 기반의 데이터 교환 포맷
  • 2001년 더글라스 크락포드는 lisp에서 아이디어를 얻어 텍스트 형식으로 데이터를 저장하는 자바스크립트 문법을 ‘JSON’이라 이름 붙이고 문서화했다.

JSON은 객체, 배열, 문자열, 숫자들, 불린 등을 구조적인 데이터로 표현하기 위해 자바스크립트 리터럴로 사용된다.[2]

역사

특징

  • 자바스크립트를 확장하여 만들어졌다.
  • 자바스크립트 객체 표기법을 따른다.
  • 사람과 기계가 모두 읽기 편하도록 고안되었다.
  • 프로그래밍 언어와 운영체제에 독립적이다.

활용

JSON은 자바스크립트(JavScript)의 구문 형식을 따르지만, C, C++, C#, 자바(Java), 파이선(Python) 등의 프로그램 언어와도 함께 사용되는 플랫폼과 프로그래밍 언어 면에서 독립적인 언어이다. 데이터 구조는 속성(name)과 값(value) 한 쌍으로 구성되며, “속성: 값” 형식으로 데이터 객체를 표현한다. 값(value)의 자료형으로 수(number), 문자열(string), 객체(object), 배열(array), 참/거짓(boolean), 또는 빈값(null)이 지원된다. 배열(array)은 대괄호([ ])로, 객체는 속성 · 값 쌍의 집합으로 중괄호({ })를 사용하여 표현하며, 객체 간의 구분은 쉼표(,)로 한다.[1]

종류

문제점과 대안

단점

  • 문법 오류에 민감하다. 콤마가 누락되거나 중괄호가 잘못 닫히는 등 구두점에서 오타가 나면 전체 JSON파일이 망가진다.
  • 주석을 지원하지 않는다. 그래서 설정 파일을 JSON으로 작성하는 것은 어렵다.
  • 데이터 타입을 강제할 수 없다. JSON 스키마로 보완은 가능하지만 데이터 스스로 자신의 타입을 기술할 방법이 없다.[3]

대안

위와 같은 단점을 보완하고자 YAML 등의 대체 포맷을 쓰기도 하나 기계간 데이터 전송에 주로 쓰이는 JSON의 특성상 위의 단점은 큰 문제가 아니라서 JSON은 2017년 11월 현재도 XML과 대등하게 널리 쓰이고 있다.[3]

장점

  • JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다.
  • 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다.
  • 자바스크립트의 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용할 수 있다. 이런 특성은 자바스크립트를 자주 사용하는 웹 환경에서 유리하다. 그러나 실질적으로 eval 명령을 사용하면 외부에서 악성 코드가 유입될 수 있다. 모질라 파이어폭스 3.5, 인터넷 익스플로러 8, 오페라 10.5, 사파리, 구글 크롬 등 대부분의 최신 웹 브라우저는 JSON 전용 파서 기능을 내장하고 있으므로 이런 기능을 사용하는 것이 더 안전할 뿐만 아니라 빠른 방법이다.[4]

평가와 전망

각주

  1. 1.0 1.1 제이슨(JavaScript Object Notation)〉《IT용어사전》,
  2. Lee Sungyu, 〈[번역 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13
  3. 3.0 3.1 [1]〉《나무위키》
  4. [2]〉《위키백과》

참고자료

같이 보기


  질문.png 이 문서는 로고가 필요합니다.  

  의견.png 이 제이슨 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.