기본 패턴
js
// JavaScript object literal
const obj = {
user: "Kim",
active: true,
note: undefined,
};
// JSON text
const text = '{"user":"Kim","active":true}';설명
- JSON은 JavaScript에서 유래했지만 JavaScript object literal과 완전히 같지 않습니다.
- JSON에서는 key를 반드시 큰따옴표로 감싸야 하고, 주석과 trailing comma를 허용하지 않습니다.
- JavaScript object literal에서 가능한
undefined, 함수,Symbol, 메서드 문법은 JSON 값이 아닙니다. JSON.parse()는 JSON grammar를 기준으로 문자열을 읽기 때문에, "JS에서는 되는 문법"이 그대로 통하리라 기대하면 자주 실패합니다.- 실무에서는 object literal을 복사해 설정 파일이나 API mock JSON으로 붙여 넣다가 이 차이 때문에 오류가 나는 경우가 많습니다.
짧은 예제
js
JSON.parse("{'foo': 1}");
// SyntaxError
JSON.parse('{"foo": 1}');
// OK빠른 정리
| 항목 | JSON | JavaScript object literal |
|---|---|---|
| key 인용 | 필수 | 생략 가능 |
| 주석 | 불가 | 가능 |
| trailing comma | 불가 | 가능 |
undefined/함수 | 불가 | 가능 |
주의할 점
"JSON처럼 생겼다"와 "실제로 JSON이다"는 다릅니다. 특히 프런트엔드 코드 안 object literal을 설정 파일이나 API fixture로 옮길 때는 JSON 문법으로 다시 확인하는 습관이 필요합니다.
참고 링크
2 sources