JSON의 후행 쉼표 고치기
객체의 마지막 속성이나 배열의 마지막 항목 뒤의 후행 쉼표는 일부 JavaScript 환경에서는 허용되지만, JSON에서는 유효하지 않습니다.
왜 오류가 발생하는가
JavaScript 객체 리터럴은 마지막 콤마를 자주 허용하지만, JSON은 마지막 항목 뒤에 곧장 닫는 괄호나 중괄호가 와야 합니다.
잘못된 예
{ "name": "Ada", "active": true, }
수정된 JSON
{ "name": "Ada", "active": true }
후행 콤마는 어디서 오는가
대부분 누군가 설정 파일을 손으로 편집해 마지막 항목을 주석 처리했거나, JavaScript/TypeScript에서 붙여 넣을 때 생깁니다. 템플릿 엔진이나 코드 생성기가 마지막 인덱스를 추적하지 않고 모든 항목 뒤에 콤마를 찍을 때도 발생합니다.
왜 어떤 파서는 허용하고 JSON은 허용하지 않는가
JavaScript 객체 리터럴, JSON5, JSONC, YAML, 그리고 대부분 언어의 리터럴 문법은 diff를 깔끔하게 하려고 후행 콤마를 허용합니다. RFC 8259 JSON은 의도적으로 허용하지 않습니다 — JSON.parse, Go의 encoding/json, Python의 json 모듈 같은 엄격한 파서들은 모두 거부합니다.
프로덕션 전에 후행 콤마 찾기
CI에서 엄격한 JSON 파서(jq, python -m json.tool, node -e 'JSON.parse(...)')로 설정 파일을 lint하세요. TypeScript 리포지토리에서는 .json 파일에 대해 Prettier의 "trailingComma"를 "none"으로 설정해 포매터가 후행 콤마를 넣지 않도록 하세요.
후행 콤마가 진짜 버그가 아닐 때
API나 JSON을 만들어 내는 라이브러리에서 온 payload에 후행 콤마가 있다면, 문제는 소비 측이 아니라 상류의 직렬화에 있습니다. 로컬에서 콤마만 고치는 것은 생산자 쪽 버그를 가리는 일이라 다음 호출에서 다 시 나타납니다 — 생산자를 고치세요.
FAQ
Q: JSON.parse가 언젠가 후행 콤마를 받아들일까요? A: 아니요 — 엄격 모드가 표준입니다. Q: JSON5는 안전한 대안인가요? A: 사람이 편집하는 설정에만 좋고, 통신 프로토콜에는 절대 쓰지 마세요. Q: 자동 수리 도구로 후행 콤마만 제거할 수 있나요? A: 네, JSON을 붙여 넣으면 다른 흔한 구문 오류와 함께 제거됩니다.
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 객체 변환기