JSON의 따옴표 없는 키 고치기
name, active, profile처럼 일반 식별자처럼 보이더라도, 유효한 JSON에서는 항상 따옴표로 감싸야 합니다.
왜 따옴표 없는 키는 실패하는가
JavaScript는 객체 리터럴 안에서 따옴표 없는 속성 이름을 허용합니다. JSON은 허용하지 않습니다; 모든 객체 키는 큰따옴표로 감싼 문자열이어야 합니다.
잘못된 예
{ name: "Ada", active: true }
수정된 JSON
{ "name": "Ada", "active": true }
JavaScript 식별자가 JSON 키처럼 보이는 이유
JavaScript 객체 리터럴에서 name은 유효한 식별자이므로 { name: "Ada" }가 합법입니다. JSON은 그 지름길을 없애 파서가 모든 키에 대해 단 하나의 형태 — 따옴표 친 문자열 — 만 인식하면 되도록 했습니다. 그래야 문법이 어느 언어에서도 구현할 수 있을 만큼 작게 유지됩니다.
항상 따옴표가 필요한 키
파서가 따옴표 없는 식별자를 받아들이더라도 여러 형태의 키는 여전히 따옴표가 필요합니다: return, class 같은 예약어, 하이픈이나 점을 포함하는 이름, 숫자로 시작하는 이름, 결합 문자나 이모지가 포함된 유니코드 이름 등입니다. 모든 키에 따옴표를 두는 것이 이 모든 경계 사례를 한 번에 피하는 방법입니다.
자동 수리가 안전하게 빈 키에 따옴표를 다는 조건
수리 도구는 키 위치 — 즉 { 또는 , 바로 뒤이고 :가 뒤따르는 위치 — 에 있는 따옴표 없는 식별자에만 따옴표를 답니다. 이미 따옴표가 있는 키, 값, 문자열 내부의 텍스트는 건드리지 않으므로, 유효한 키와 무효한 키가 섞여 있어도 따옴표를 추가하는 것은 안전합니다.
JSON5와 JSONC
JSON5와 JSONC(VS Code의 설정에서 쓰는 포맷)는 둘 다 따옴표 없는 키와 주석을 허용합니다. 사 람이 편집하는 설정에는 좋지만 데이터 교환용으로는 안 됩니다 — JSON5를 API로 노출하면 표준 클라이언트가 거부합니다.
FAQ
Q: 왜 내 JSON에 따옴표 없는 키가 있죠? A: 대개 JavaScript 객체 리터럴에서 복사했거나, 따옴표를 잊은 템플릿 엔진이 만든 것입니다. Q: package.json에서는 키에 따옴표 없이 둬도 되나요? A: 안 됩니다 — package.json은 엄격한 JSON이고, tsconfig.json(JSONC)만 그것을 허용합니다.
JSON 수리 가이드
토픽 허브
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
구체적인 가이드
- Base64 문자열 디코드 방법 (그리고 JWT 페이로드)
- URL 인코딩: 쿼리 파 라미터와 경로를 퍼센트 인코드하기
- YAML을 JSON으로 변환하기 (그리고 들여쓰기 오류 피하기)
- JSON을 CSV로 변환: 객체 배열을 펴기
- JSON을 XML로 변환: 루트, 속성, 배열
- JSON을 문자열 리터럴로 이스케이프하기 (그리고 이중 인코드된 JSON 디코드)
- JSON의 후행 쉼표 고치기
- JSON의 작은따옴표 고치기
- LLM이 만든 JSON 고치기
- JSON 파싱 오류 “Expected Property Name” 고치기
- JSON vs JavaScript 객체 리터럴
- API 요청 전에 JSON 검증하기
- JSON 포맷터 vs JSON Repair
- JSON Unexpected Token 오류 고치기
- JSON에서 JavaScript 객체 변환기