Language/JSON [JSON] 기초
  • 728x90
    반응형

     

     

     

     

    JSON 이란?

    JSON은 JavaScript Object Notation의 약자이다.

     

    JSON은 좀더 쉽게 데이터를 교환하고 저장하기 위하여 만들어진 텍스트 기반의 데이터 교환 표준이다.

     

    이러한 JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안 되었다. 또한 JSON은 텍스트 기반이므로 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있다.

     

    🔔 예제)

    {    
    	"language": [
        	{
                "name": "HTML",            
                "category": "web",            
                "developer": "W3C"       
            }, 
            {            
                "name": "CSS",            
                "category": "web",            
                "developer": "W3C"        
            },        
            {            
                "name": "Java",            
                "category": "application",            
                "developer": "Oracle"	        
            },        
            {            
                "name": "Python",            
                "category": "application",            
                "developer": "Python"        
            }
    	]
    }

     

     

     

    JSON의 특징

    JSON은 다음과 같은 특징을 가진다.

     

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

     

     

    JSON 표준

    JSON은 2009년에 더글라스 크록포드(Douglas Crockford)가 처음으로 규정하였다. 현재 JSON은 RFC 7159와 ECMA-404라는 두 개의 경쟁 표준에 의해 규정되고 있다.

     

    ECMA 표준에서는 문법만 정의할 정도로 최소한의 정보만 정의되어 있으며, RFC 표준은 문법 및 보안에 관련된 사항까지 일부 제공하고 있다.

     

    JSON 표기법과 프로그래밍 언어별 지원 라이브러리에 대한 더 자세한 사항은 다음 링크를 참고하면 된다.

     

     

    JSON

    JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1

    www.json.org

     

     

     

    XML 이란?

    XML은 Extensible Marup Language의 약자이다. 이러한 XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이다. 이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어 있다.

     

    XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌다. 또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.

     

     

    JSON과 XML의 공통점

    JSON과 XML은 다음과 같은 공통점을 가지고 있다.

     

    1. 둘 다 데이터를 저장하고 전달하기 위해 고안되었다.
    2. 둘 다 기계뿐만 아니라 사람도 쉽게 읽을 수 있다.
    3. 둘 다 계층적인 데이터 구조를 가진다.
    4. 둘 다 다양한 프로그래밍 언어에 의해 파싱될 수 있다.
    5. 둘 다 XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.

     

     

     

    JSON과 XML의 차이점

    하지만 JSON과 XML은 다음과 같은 차이점도 가지고 있다.

     

    1. JSON은 종료 태그를 사용하지 않는다.
    2. JSON의 구문이 XML의 구문보다 더 짧다.
    3. JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있다.
    4. XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있다.
    5. XML은 XML 파서로 파싱되며, JSON은 자바스크립트 표준 함수인 eval() 함수로 파싱된다.

    🔔 예제) XML

    <dog>    
    	<name>식빵</name>    
    	<family>웰시코기<family>
        <age>1</age>    
    	<weight>2.14</weight>
    </dog>

     

    위의 예제를 JSON 형태의 데이터로 바꾸면 다음과 같다.

     

    🔔 예제) JSON
    {    
    	"name": "식빵",  
    	"family": "웰시코기",    
    	"age": 1,    
    	"weight": 2.14
    }

     

     

     

    JSON의 사용 범위

    XML 문서는 XML DOM(Document Object Model)을 이용하여 해당 문서에 접근한다.

     

    하지만 JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱하므로, XML보다 더욱 빠른 처리 속도를 보여준다. 따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용되고 있다.

     

    하지만 JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다. 따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증할 수 있는 XML이 아직도 많이 사용되고 있다.

     

     

    JSON 문법

    JSON은 자바스크립트의 객체 표기법에서 리터럴(literal)과 프로퍼티(property)를 표현하는 방법만 가져와서 사용한다. 따라서 JSON 데이터는 모양과 규칙이 매우 단순하다. 그로 인해 브라우저 영역에서도 쉽고 빠르게 그 의미를 해석할 수 있으며, 다른 프로그래밍 언어에서도 구현하기 쉽다.

     

     

     

    리터럴(literal)

    리터럴(literal)은 변수와 다르게 해석되는 값 그 자체를 의미한다.

     

    다음 예제에서 등장하는 값은 모두 리터럴이다.

     

    🔔 예제)

    12    // 숫자 리터럴

    "JSON"    // 문자열 리터럴

    true    // 불리언 리터럴

     

    💡 TIP ? 변수(variable)란 데이터(data)를 저장할 수 있는 메모리 공간을 의미하며, 그 값이 변경될 수 있다.

     

     

     

    객체(object)

    객체(object)란 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있다. JSON에서 객체란 이름(name)과 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합이다.

     

    다음 예제는 이름과 값으로 이루어진 네 쌍의 프로퍼티를 가지는 "강아지" 객체를 나타내는 예제이다.

     

    🔔 예제)

    {    
    	"name": "식빵",   
    	"family": "웰시코기",    
    	"age": 1,    
    	"weight": 2.14
    }

     

     

    JSON 주석

    JSON 표준의 창시자인 더글라스 크록포드는 JSON에는 주석이 들어가지 않는 것이 바르다고 규정하고 있다.

    그것은 서로 다른 시스템 간의 연동과 호환성을 위한 조치였다.

     

    반드시 주석을 사용해야 한다면, 주석이 포함된 JSON 데이터를 파싱하기 전에 주석만을 먼저 제거해야 한다. 하지만 되도록 JSON에는 주성을 사용하지 않는 것이 좋다.

     

     

     

    JSON 구조

    JSON은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합이다.

    따라서 JSON 데이터는 다음과 같은 자바스크립트 객체 표기법에 따른 구조로 구성된다.

     

    1. JSON 데이터는 이름과 값의 쌍으로 이루어진다.
    2. JSON 데이터는 쉼표(,)로 나열된다.
    3. 객체(object)는 중괄호({})로 둘러쌓아 표현한다.
    4. 배열(array)은 대괄호([])로 둘러쌓아 표현한다.

     

     

     

    JSON 데이터

    JSON 데이터는 이름과 값의 쌍으로 구성된다. 이러한 JSON 데이터는 데이터 이름 클론(:), 값의 순서로 구성된다.

     

    문법

    "데이터 이름" : 값

     

    다음 예제는 데이터의 이름이 "name"이고, 값은 "식빵"이라는 문자열을 갖는 JSON 데이터의 예제이다.

     

    🔔 예제)

    "name" : "식빵"

     

    데이터의 이름도 문자열이므로, 항상 큰 따옴표("")와 함께 입력해야 한다.

     

    데이터의 값으로는 다음과 같은 타입이 올 수 있다.

     

    1. 숫자(number)
    2. 문자열(string)
    3. 불리언(boolean)
    4. 객체(object)
    5. 배열(array)
    6. NULL

     

     

     

    JSON 객체

    JSON 객체는 중괄호({})로 둘러쌓아 표현한다.

    또한, JSON 객체는 쉼표(,)를 사용하여 여러 프로퍼티를 포함할 수 있다.

     

    🔔 예제)

    {    
    	"name": "식빵",   
    	"family": "웰시코기",    
    	"age": 1,    
    	"weight": 2.14
    }

     

    JSON 객체를 그림으로 나타내면 다음과 같다.

     

     

    JSON 배열

    JSON 배열은 대괄호([])로 둘러쌓아 표현한다.

    또한, JSON 배열은 쉼표(,)를 사용하여 여러 JSON 데이터를 포함할 수 있다.

     

    다음 예제는 배열의 이름이 "dog"이고, 3개의 JSON 객체를 요소로 가지는 JSON 배열의 예제이다.

     

    🔔 예제)

    "dog": [    
    	{"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},    
    	{"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},    
    	{"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
    ]

     

    JSON 배열을 그림으로 나타내면 다음과 같다.

     

     

     

     

     

     

     

    728x90
    반응형

    'Language > JSON' 카테고리의 다른 글

    JSON 사용법  (0) 2018.11.16
    [JSON] 스키마  (0) 2018.11.15
    JSON 타입  (1) 2018.11.15
상단으로