JSON 포매터에 담긴 이야기

JSON은 오늘날 대부분의 웹 API가 사용하는 형식이지만 위원회가 설계한 것이 아닙니다. 발명되었다기보다 발견되었습니다. 프로그램 사이에서 데이터를 옮기기에 딱 충분한 JavaScript의 작은 부분집합이었습니다.

중괄호와 중첩된 데이터 블록이 빛나는 나무를 이루는 모습
중괄호와 중첩된 데이터 블록이 빛나는 나무를 이루는 모습

발견된 형식

2001년 무렵 Douglas Crockford와 State Software의 동료들은 플러그인 없이 브라우저와 서버가 데이터를 주고받을 방법을 찾고 있었습니다. 그들은 JavaScript가 이미 이해하던 객체와 배열 리터럴을 사용하고, 이 아이디어에 이름을 붙여 문법을 json.org에 올렸습니다. 명함 뒷면에 들어갈 만큼 짧은 것으로 유명합니다.

주석이 없는 이유

Crockford는 일찍이 JSON에서 주석을 없앴습니다. 사람들이 주석에 파서용 지시문을 넣기 시작해 상호 운용성이 깨질 수 있었기 때문입니다. 그는 파싱 전에 축소 도구로 주석을 지우라고 조언했습니다. 그래서 포매터는 주석을 예상치 못한 문자로 보고하고, 설정 파일용으로 JSON5와 JSONC 같은 형식이 생겼습니다.

웹 페이지에서 표준으로

JSON은 2006년 RFC 4627로 처음 기술되었습니다. Ecma는 2013년 ECMA-404를 발표했고, IETF는 2017년 기존 문서를 RFC 8259로 대체하며 시스템 간에 주고받는 JSON에 UTF-8을 요구했습니다. 문법은 json.org 이후 거의 바뀌지 않았습니다. 객체, 배열, 문자열, 숫자, true, false, null입니다.

숫자와 경로

JSON 자체는 숫자를 제한하지 않지만 대부분의 파서는 숫자를 64비트 부동소수점으로 저장합니다. 그래서 9007199254740991보다 큰 정수는 조용히 정밀도를 잃을 수 있고, 큰 ID는 문자열로 보내는 경우가 많습니다. 값을 가리키기 위해 Stefan Goessner가 2007년 XPath를 본떠 JSONPath를 제안했고, 2024년 RFC 9535 표준이 되었습니다. 이 포매터가 복사하는 경로는 달러 기호와 대괄호를 쓰는 그 표기법을 따릅니다.

자주 묻는 질문

JSON은 누가 발명했나요?

Douglas Crockford가 2000년대 초에 JSON을 정의하고 널리 알렸습니다. 그는 이미 존재하던 JavaScript의 부분집합이므로 자신이 발견한 것이라고 말합니다.

JSON은 왜 끝의 쉼표나 작은따옴표를 허용하지 않나요?

모든 언어가 같은 방식으로 파싱할 수 있도록 문법을 최대한 작게 유지했기 때문입니다. 편의 기능이 하나 늘 때마다 두 파서가 다르게 해석할 기회도 늘어납니다.

JSON은 JavaScript 객체와 같나요?

아니요. JSON은 텍스트입니다. 키에는 큰따옴표가 필요하고, 함수, undefined, 주석, NaN, Infinity는 JavaScript 코드에서는 쓸 수 있어도 JSON에서는 허용되지 않습니다.

시도해 볼 준비가 되셨나요?

브라우저에서 PictorX를 엽니다. 설치가 필요 없고 시작하는 데 신용 카드가 필요하지 않습니다.

JSON 포매터 열기