번역 작업 진행중입니다.

JSON 객체는 JavaScript Object Notation(JSON)을 분석하거나, 임의의 값을 JSON으로 변환하는 메서드를 가지고 있습니다. 직접 호출하거나 인스턴스를 생성할 수 없으며, 두 개의 메서드를 제외하고 다른 기능은 없습니다.

자바스크립트와 JSON의 차이

JSON은 객체, 배열, 숫자, 문자열, 부울과 null을 직렬화하기 위한 구문으로, 자바스크립트 구문에 기반을 두고 있지만 분명한 차이점을 가지고 있습니다. 즉, 어떤 자바스크립트는 JSON이 아닙니다.

객체와 배열: 속성의 이름은 반드시 큰따옴표로 표시된 문자열이어야 합니다. 후행 쉼표는 허용하지 않습니다.

숫자: 선행 0은 허용하지 않습니다. (JSON.stringify()는 선행 0을 무시하지만, JSON.parse()는 구문 오류를 던집니다.) 소수점 뒤에는 적어도 한 자릿수가 뒤따라야 합니다.

모든 JSON 문자열은 올바른 자바스크립트 표현식입니다. 단, 해당 자바스크립트 엔진이 모든 JSON 텍스트를 올바른 ECMA-262로 만드는 제안을 구현해야 합니다. 본 제안을 구현하지 않은 엔진에서는 U+2028 LINE SEPARATOR와 U+2029 PARAGRAPH SEPARATOR를 JSON의 문자열 리터럴과 속성의 이름으로 사용할 수 있지만, 자바스크립트 리터럴에서 사용하는건 SyntaxError입니다.

JSON.parse()로 JSON 문자열을 분석하고 eval이 자바스크립트 문자열로 실행하는 다음 예시를 참고하세요.

var code = '"\u2028\u2029"';
JSON.parse(code); // evaluates to "\u2028\u2029" in all engines
eval(code); // throws a SyntaxError in old engines

전체 JSON 구문

JSON = null
    or true or false
    or JSONNumber
    or JSONString
    or JSONObject
    or JSONArray

JSONNumber = - PositiveNumber
          or PositiveNumber
PositiveNumber = DecimalNumber
              or DecimalNumber . Digits
              or DecimalNumber . Digits ExponentPart
              or DecimalNumber ExponentPart
DecimalNumber = 0
             or OneToNine Digits
ExponentPart = e Exponent
            or E Exponent
Exponent = Digits
        or + Digits
        or - Digits
Digits = Digit
      or Digits Digit
Digit = 0 through 9
OneToNine = 1 through 9

JSONString = ""
          or " StringCharacters "
StringCharacters = StringCharacter
                or StringCharacters StringCharacter
StringCharacter = any character
                  except " or \ or U+0000 through U+001F
               or EscapeSequence
EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
              or \u HexDigit HexDigit HexDigit HexDigit
HexDigit = 0 through 9
        or A through F
        or a through f

JSONObject = { }
          or { Members }
Members = JSONString : JSON
       or Members , JSONString : JSON

JSONArray = [ ]
         or [ ArrayElements ]
ArrayElements = JSON
             or ArrayElements , JSON

중요하지 않은 공백은 JSONNumber (숫자에는 공백이 없어야 함) 또는 JSONString (문자열에서 해당 문자로 해석되거나 오류를 일으킴) 내를 제외하고 어디서나 존재할 수 있습니다. 탭 문자 (U+0009), 캐리지 리턴 (U+000D), 라인 피드 (U+000A) 및 스페이스 (U+0020) 문자는 유일하게 유효한 공백 문자입니다.

메서드

JSON.parse()
문자열을 JSON으로 보고 구문 분석합니다, 선택 사항으로 구문 분석으로 생성된 값과 속성을 변환해 그 값을 반환합니다.
JSON.stringify()
지정된 값에 해당하는 JSON 문자열을 반환합니다, 선택 사항으로 특정 속성만 포함하거나 사용자 정의 방식으로 속성을 대체합니다.

스펙

스펙 상태 설명
ECMAScript 5.1 (ECMA-262)
The definition of 'JSON' in that specification.
Standard 초기 정의.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'JSON' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'JSON' in that specification.
Draft  

브라우저 호환성

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes3.5810.54
parse Yes Yes3.5810.54
stringify Yes Yes3.5810.54
JavaScript is a superset of JSON66 No62 No53 Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes4 Yes Yes Yes
parse Yes Yes Yes4 Yes Yes Yes
stringify Yes Yes Yes4 Yes Yes Yes
JavaScript is a superset of JSON6666 No6253 Yes No

참조

문서 태그 및 공헌자

이 페이지의 공헌자: urty5656, goeo1066, Netaras, MexieAndCo
최종 변경: urty5656,