JSON파싱과 직렬화

JSON과 JavaScript object literal 차이

JSON과 JavaScript object literal이 비슷해 보여도 key 인용, 주석, trailing comma, undefined 같은 차이가 있다는 점을 정리합니다.

마지막 수정 2026년 3월 20일

기본 패턴

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

빠른 정리

항목JSONJavaScript object literal
key 인용필수생략 가능
주석불가가능
trailing comma불가가능
undefined/함수불가가능

주의할 점

"JSON처럼 생겼다"와 "실제로 JSON이다"는 다릅니다. 특히 프런트엔드 코드 안 object literal을 설정 파일이나 API fixture로 옮길 때는 JSON 문법으로 다시 확인하는 습관이 필요합니다.

참고 링크

2 sources