기본 패턴
text
흔한 오류
- { "a": 1, } // trailing comma
- { a: 1 } // 따옴표 없는 key
- { "a": 'x' } // 작은따옴표 문자열
- { "a": 1 } // note // 주석설명
- 표준 JSON은 trailing comma를 허용하지 않습니다. 마지막 항목 뒤에 쉼표를 남기면 오류가 납니다.
- key는 항상 문자열이므로 따옴표 없는 식별자 표기는 허용되지 않습니다.
- 주석 문법도 JSON 표준에 없습니다. 그래서 "설정 파일이니까 주석쯤은 되겠지"라는 기대가 자주 깨집니다.
- RFC 8259는 parser가 확장 문법을 받아들일 수도 있다고 말하지만, generator는 표준 문법을 엄격히 따라야 합니다.
- 즉 어떤 도구가 비표준 JSON을 읽어 준다고 해서, 그 형식을 JSON 자체로 오해하면 다른 시스템과 연결될 때 문제가 생깁니다.
짧은 예제
js
JSON.parse("{'foo': 1}");
// SyntaxError
JSON.parse('{"foo": 1}');
// OK빠른 정리
| 흔한 오류 | 이유 |
|---|---|
| trailing comma | 표준 JSON 문법 아님 |
| 주석 | JSON에는 주석 규칙이 없음 |
| 작은따옴표 문자열 | 문자열은 큰따옴표만 허용 |
| 따옴표 없는 key | key는 string이어야 함 |
주의할 점
JSON5, HJSON, 일부 설정 파서처럼 확장 문법을 읽는 도구는 꽤 많습니다. 하지만 그건 "JSON과 비슷한 형식"을 읽는 것이지 표준 JSON을 넓힌 것이 아닙니다. 시스템 간 교환용이면 항상 표준 JSON으로 맞추는 편이 안전합니다.
참고 링크
2 sources