JSON.parse/stringify의 한계: 기본 JSON 메서드는 Date, Map, Set, RegExp, Error, Promise, URL 등 특정 데이터 타입을 직렬화/역직렬화할 때 정보를 손실하며, 순환 참조를 처리하지 못하고, 클래스 인스턴스를 일반 객체로 변환하며, 주석을 지원하지 않습니다. 🚫
SuperJSON: 널리 사용되는 라이브러리로, JSON.parse 및 JSON.stringify를 대체하여 Set, Map, Date, RegExp, Error, URL 등 다양한 비지원 데이터 타입을 보존합니다. meta 키를 사용하여 타입 정보를 추가하며, TypeScript 지원 및 편리한 호환성 차트를 제공합니다. ✨
Seraveal: SolidStart 및 Tanstack Start에서 사용되며, 동기/비동기/스트리밍 모드를 지원합니다. JavaScript 코드를 전송하는 eval 모드는 원격 코드 실행 위험이 있어 서버 간 통신에만 권장됩니다. 안전한 대안으로 toJSON/fromJSON 메서드를 제공하며, SuperJSON과 유사하게 많은 타입을 보존합니다. 🛡️
JSON 주석 처리: 기본 JSON은 주석을 지원하지 않지만, Microsoft의 JSONC parser는 주석이 있는 JSON을 읽고 쓸 수 있게 하며, strip-json-comments 라이브러리는 주석을 제거하여 표준 JSON.parse를 사용할 수 있게 합니다. 이는 tsconfig.json과 같은 설정 파일에 유용합니다. 📝
데이터 타입 보존의 중요성: 복잡한 객체나 특정 데이터 타입을 서버와 클라이언트 간에 안전하고 정확하게 전송해야 할 때, 표준 JSON 메서드의 한계를 이해하고 SuperJSON 또는 Seraveal과 같은 대안 라이브러리를 활용하는 것이 필수적입니다. 💡