Javascript 와 JSON

박성룡 ( Andrew park )
4 min readJun 2, 2019

--

자바스크립트를 처음부터 다시 공부해보려고 한다.

JSON 은 JavaScript Object Notation 의 약자이며, 데이터 형식이다.

JSON 은 더글라스 크록포드가 이전부터 쓰고 있던, 표기법을 2006년 RFC 4627 로 등록 하였고, RFC 7159ECMA-404 라는 두 개의 경쟁 표준에 의해 기술되고 있다.

JSON 은 문자열 형태로 이루어져 있다.

각 프로그래밍 언어들은 표준에 맞게 JSON 을 파싱 하거나 직렬화 할 수 있다.

데이터 형식

JSON 은 다음 형식을 지원한다.

  1. 수(Number)
  2. 문자열(String)
  3. 참/거짓(Boolean)
  4. 배열(Array)
  5. 객체(Object)
  6. null(빈값)

배열과 객체는 값으로 6가지 형식을 모두 지원한다.

Number

- 으로 시작하거나, [0–9] 으로 시작해야 한다.

중간에 .으로 실수를 표현할 수 있다.

e[+|-][0-9] 으로 지수를 표현할 수 있다.

8진수와 16진수 형식은 지원하지 않는다.

String

" 안에 둘러 싸인 Unicode 문자들의 조합이다.

이스케이프 문도 지원한다.

Boolean / null

true , false , null 은 그 자체로도 유요한 JSON 값이다.

Object

{ 으로 시작하고 } 으로 끝나야 한다.

name:value 쌍으로 이루어져 있어야 하며 , 으로 구분한다.

name 은 반드시 string 이어야 한다.

value 는 Number, String, Boolean, Array, Object, null 이 올 수 있다.

Array

[ 으로 시작하고 ] 으로 끝나야 한다.

순서가 보장되는 값 으로 이루어져 있으며, , 으로 구분한다.

값으로 Number, String, Boolean, Array, Object, null 이 올 수 있다.

데이터 타입

파일 확장자로 .json 확장자를 가진 단순 텍스트 파일에 저장할 수 있다.

MIME 타입은 application/json 이다.

JSON 객체

JSON 객체는 Global 객체 이다.

JSON 을 파싱 하거나 직렬화 하는 메서드를 가지고 있다.

JSON.parse

JSON 문자열의 구문을 분석하고, Number, String, Boolean, Array, Object, null 을 생성한다.

만약 JSON 에 어긋나는 문자열 형태라면 SyntaxError 가 발생한다.

JSON.parse(text, 변형할 함수) 함수를 추가할 수 있다.

JSON.stringify

값이나 객체를 JSON 문자열로 변환한다.

객체의 함수와 프로토타입, undefined 인 프로퍼티는 생략되어 JSON 문자열로 변환된다.

객체의 프로퍼티로 1 과 “1” 이 존재한다면, 하나는 무시된다.

심볼 키는 무시된다.

열거 불가능한 프로퍼티 들은 무시된다.

프로퍼티 가 number 로 이루어져 있을 경우 string 으로 변환된다.

'은 쓰지 않으며 반드시 " 로 변환된다.

JSON.stringify( 값, replacer (허용할 프로퍼티) ) 에 JSON 으로 허용되는 프로퍼티만 추가할 수 있다.

replacer 값은 String 배열 과 Number 배열 혹은 함수 (key, value) => (value) 가 될 수 있다.

만약 replacer 값 이 없거나 null 이면, 모든 값이 반환된다.

JSON.stringify( 값, 허용할 속성, space ( 공백 ) )

JSON 문자열이 가독성 좋게 출력에 사용된다. Number 는 space 수를 나타내며, 1 ~ 10 으로 제한된다. String 이라면, 10개의 문자열 만 출력된다.

toJSON

만약 객체에 값이 함수 인 toJSON 속성이 있다면, JSON 객체는 해당 메서드를 이용하여, 반환 된 값을 직렬화한다.

이 대표적인 예로 Date 객체가 존재한다.

이외

Javascript 에서는 JSON 에 U+2028 LINE SEPARATOR와 U+2029 PARAGRAPH SEPARATOR 를 포함할 수 없지만, 다른 프로그램 엔진에서는 포함할 수 있다.

만약 JSON 객체가 없는 브라우저라면, 더글라스 포드만이 만든 JSON-js 을 이용할 수 있다.

--

--

박성룡 ( Andrew park )
박성룡 ( Andrew park )

Written by 박성룡 ( Andrew park )

Javascript is great We may not be great

No responses yet