본문 바로가기
Programming

JSON 알아보기

by 보라코끼리 2021. 8. 11.
728x90

JSON이란?

  • JavaScript Object Notation의 약자로 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준이다.
  • XML의 대안으로 좀 더 쉽게 데이터를 교환하고 저장하기 위해 만들어졌다.
  • 텍스트 기반이기 때문에 여러 프로그래밍 언어에서 사용이 가능하다.

 

특징

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

 

사용 범위

  • JSON은 문자열을 전송받은 후에 해당 문자열을 바로 파싱한다 -> XML 보다 더욱 빠른 처리 속도를 보인다.
  • HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용된다.
  • 전송받은 데이터의 무결성을 사용자가 직접 검증해야하기 때문에 데이터 검증이 필요한 곳에는 스키마를 사용하여 데이터 무결성을 검증할 수 있는 XML이 많이 사용된다.

 

문법

  • 자바스크립트의 객체 표기법에서 리터럴(literal)과 프로퍼티(property)를 표현하는 방법만 가져와서 사용한다. 
    • -> 모양과 규칙이 매우 단순하다.
    • 브라우저 영역에서도 쉽고 빠르게 그 의미를 해석할 수 있으며, 다른 프로그래밍 언어에서 구현하기 쉽다.
  • 리터럴(literal)
    • 변수와 다르게 해석되는 값 그 자체
  • 변수(variable)
    • 데이터(data)를 저장할 수 있는 메모리 공간
    • 값이 변경될 수 있다.
  • 객체(Object)
    • 실생활에서 인식할 수 있는 사물
    • JSON에서 객체란 이름(name)과 값(value)으로 구성된 프로퍼티(property)의 정렬되지 않은 집합이다.
  • 주석
    • 시스템 간의 연동과 호환성을 위한 조치이기 때문에 주석이 들어가지 않는 것이 바르다고 규정하고 있다.
    • 되도록 주석을 사용하지 않는 것이 좋다.

 

구조

  • JSON은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합이다.
    • JSON 데이터는 이름과 값의 쌍으로 이루어진다.
    • JSON 데이터는 쉼표(,)로 나열된다.
    • 객체(object)는 중괄호 {}로 둘러쌓아 표현한다.
    • 배열(array)은 대괄호 []로 둘러쌓아 표현한다.
"dog": [
	{"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
  	{"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
    {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
]

 

타입

  • 숫자(number)
    • 정수(integer)
      • 부호를 가지는 소수 부분이 없는 수
    • 실수(fraction)
      • 소수 부분을 가지는 수
    • 지수(exponent)
      • e표기법
      • 매우 큰 수나 매우 작은 수를 표현할 때 표현할 수 있다.
  • 문자열(string)
    • 일련의 연속된 문자의 집합
    • 큰따옴표("") 안에 유니코드 문자들의 나열로 구성된다.
    • 자바스크립트에서는 문자열을 표현할 때 큰따옴표("")와 작은따옴표('')를 모두 사용할 수 있지만, JSON 에서는 오직 큰따옴표("")만을 사용할 수 있다.
  • 이스케이프 시퀀스(escape sequence)
    • 문자열이 화면에 출력될 때 사용하게 될 특수한 문자를 위해 만들어졌다.
    • 역슬래시(\)와 특정 문자와의 조합으로 사용한다.
      • \b : 백스페이스
      • \f : 폼 피드(form feed)
      • \n : 개행
      • \r : 캐리지 리턴(carriage return)
      • \t : 탭(tab)
      • \" : 큰따옴표
      • \/ : 슬래시
      • \\ : 역슬래시
      • \uHHHH : 16진수 네 자리로 표현된 유니코드 문자
  • 불리언(boolean)
    • 항상 true와 false를 소문자로 표기해서 사용해야 한다.
  • 객체(object)
    • 데이터 이름과 값의 한 쌍으로 구성된 프로퍼티의 정렬되지 않은 집합
    • 중괄호 ({})로 둘러싸여 있다.
    • 쉼표 (,) 를 사용하여 프로퍼티를 여러 개 가질 수 있다.
    • 프로퍼티의 순서는 중요하지 않으며, 데이터의 이름은 문자열로 반드시 큰따옴표("")를 사용해야 한다.
  • 객체 안의 객체
    • 데이터의 값이 객체라면 객체 안에 객체가 포함되는 계층 구조가 형성된다.
  • 배열(array)
    • 여러 개의 데이터가 순서를 가지고 나열된 집합
    • 대괄호 ([])로 둘러싸여 있다.
    • 쉼표 (,)를 사용하여 여러 개의 데이터를 나열할 수 있다.
    • JSON에서 제공하는 기본 타입을 모두 저장할 수 있다.
    • 배열과 객체의 차이
      • 여러 데이터를 묶어놓은 집합이라는 점에서 비슷하지만 객체는 프로퍼티의 집합, 배열은 데이터값의 집합이라는 차이가 있다.
    • JSON 배열은 여러 타입의 배열 요소를 가질 수 있다.
  • null
    • 아무런 값도 가지고 있지 않은 빈 값
    • 항상 null을 소문자로 표기해서 사용해야 한다.
  • undefined는 JSON에서 제공하지 않는다.

 

----

 

 

728x90