"제이슨"의 두 판 사이의 차이
tjdwhd2401 (토론 | 기여) |
잔글 |
||
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 |
* 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)은 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]
평가와 전망
각주
참고자료
- 네이버 지식백과 홈페이지 - https://terms.naver.com/entry.nhn?docId=5714735&cid=42346&categoryId=42346
- Lee Sungyu, 〈[번역 자바스크립트의 역사 – 과거]〉《WIT – NTS UIT BLOG》, 2014-08-13
- 나무위키 공식 홈페이지 - https://namu.wiki/w/JSON
- 위키백과 공식 홈페이지 - https://ko.wikipedia.org/wiki/JSON
같이 보기
이 문서는 로고가 필요합니다.