JSON 구문: 규칙과 예제

JSON은 단순하게 설계되었지만, 정확히 따라야 하는 엄격한 구문 규칙이 있습니다. 잘못 배치된 쉼표 하나 또는 잘못된 따옴표 문자 하나가 전체 JSON을 유효하지 않게 만들 수 있습니다. 이 가이드는 유효한 JSON을 작성하고 오류가 발생했을 때 빠르게 식별하기 위해 알아야 할 모든 구문 규칙을 다룹니다.

기본 규칙

JSON 구문은 JavaScript의 하위 집합을 기반으로 하지만 교차 플랫폼 호환성을 보장하는 더 엄격한 규칙을 가지고 있습니다. 이러한 규칙을 이해하는 것은 JSON을 효과적으로 작업하는 데 필수적입니다. 가장 중요한 규칙: JSON 문서는 문자열에 큰따옴표를 사용해야 하며, 작은따옴표를 사용할 수 없습니다. JavaScript는 'hello'와 "hello" 모두를 허용하지만, JSON은 "hello"만 허용합니다. 마찬가지로, JSON 객체의 모든 키는 큰따옴표로 묶인 문자열이어야 합니다. JavaScript 객체 {name: "John"}은 유효한 JavaScript이지만 유효하지 않은 JSON입니다; {"name": "John"}으로 작성되어야 합니다. JSON의 공백은 유연합니다. 가독성을 위해 토큰 사이에 공백, 탭 및 줄 바꿈을 자유롭게 추가할 수 있으며 데이터에 영향을 주지 않습니다. JSON에는 주석 개념이 없습니다. 후행 쉼표는 엄격히 금지됩니다. JSON은 대소문자를 구분합니다. 불린 값은 소문자 true와 false여야 하며, True와 False가 아닙니다. 마찬가지로, null은 소문자여야 합니다. 인코딩은 UTF-8(선호), UTF-16 또는 UTF-32여야 합니다.

객체

객체는 가장 일반적으로 사용되는 JSON 구조입니다. Python의 사전이나 Java의 해시맵과 유사하게 키-값 쌍의 순서가 없는 컬렉션을 나타냅니다. 객체는 중괄호 {}로 둘러싸여 있고 0개 이상의 키-값 쌍을 포함합니다. 각 키-값 쌍은 키(큰따옴표로 묶인 문자열이어야 함), 콜론, 값으로 구성됩니다. 여러 쌍은 쉼표로 구분됩니다. 객체는 어떤 깊이로든 중첩될 수 있습니다. JavaScript 객체와 달리, JSON 객체는 메서드나 함수가 없습니다—데이터만 포함합니다. 키 순서는 기술적으로 사양에 의해 정의되지 않지만, 많은 구현이 삽입 순서를 유지합니다. 중복 키는 기술적으로 허용되지만 강력히 권장하지 않습니다. 플랫폼 전반에서 일관된 동작을 보장하기 위해 피하세요.

배열

JSON의 배열은 순서가 있는 값의 목록을 나타냅니다. 이름이 지정된 속성의 컬렉션인 객체와 달리, 배열은 위치가 중요한 시퀀스입니다. 배열은 대괄호 []로 둘러싸여 있고 쉼표로 구분된 0개 이상의 값을 포함합니다. JSON 배열은 모든 요소가 동일한 타입일 필요는 없지만, 실제로는 일반적으로 일관된 타입을 원할 것입니다. 중첩된 배열은 유효하며 다차원 데이터를 나타내는 데 유용합니다. 배열 순서는 보존됩니다—배열을 직렬화하고 다시 파싱하면 요소가 동일한 순서로 나타납니다.

일반적인 구문 오류

경험 많은 개발자조차도 JSON 구문 오류를 만듭니다. 작은따옴표 오류는 JavaScript에서 온 개발자들 사이에서 매우 일반적입니다. 후행 쉼표는 JSON을 편집할 때 수많은 파싱 오류를 일으킵니다. 따옴표 없는 키는 JavaScript에서는 작동하지만 JSON에서는 작동하지 않습니다. JSON에는 주석 구문이 없습니다. undefined 또는 NaN 값을 사용하면 실패합니다. 왜냐하면 그것들은 JSON에 존재하지 않기 때문입니다. 불일치하는 괄호는 복잡한 JSON에서 쉽게 만들어집니다. 이스케이프 시퀀스 오류는 문자열의 특수 문자가 제대로 이스케이프되지 않을 때 발생합니다. 선행 0이나 16진수 표기법과 같은 잘못된 숫자 형식은 미묘한 오류를 일으킵니다.

도구 사용해보기

JSON 포맷터

JSON 포맷터

관련 기사