모든 개발자가 저지르는 25가지 JSON 실수
JSON은 웹 통신의 중추입니다. 가볍고 읽기 쉽지만, 규칙이 엄격합니다. 작은 오류 하나가 코드를 망가뜨릴 수 있습니다.
더 나은 데이터 구조를 작성하려면 다음과 같은 흔한 실수들을 피하세요.
구문 오류 (Syntax Errors)
- 큰따옴표만 사용하세요. JavaScript에서는 작은따옴표가 작동하지만 JSON에서는 실패합니다.
- 마지막 쉼표(trailing comma)를 제거하세요. 마지막 항목 뒤에 쉼표가 있으면 오류가 발생합니다.
- 누락된 쉼표를 추가하세요. 모든 키-값 쌍 사이에는 쉼표가 있어야 합니다.
- 모든 키에 따옴표를 붙이세요. 모든 키는 반드시 큰따옴표로 감싸야 합니다.
- 괄호를 맞추세요. 대괄호가 들어가야 할 자리에 중괄호를 사용하지 마세요.
데이터 타입 실수
undefined값을 처리하세요. JSON은undefined를 지원하지 않습니다. 대신null을 사용하세요.NaN과Infinity를 피하세요. 이 값들은 직렬화(serialization) 과정에서null로 변합니다.- 날짜 형식을 기억하세요. JSON은 날짜를 문자열로 취급합니다. 다시
Date객체로 파싱해야 합니다. - 10진수 숫자를 사용하세요. 16진수나 8진수 형식을 사용하지 마세요.
- 함수를 저장하지 마세요. JSON은 정적 데이터 전용입니다.
- 주석을 피하세요. JSON은
//또는/* */주석을 허용하지 않습니다. - 큰따옴표를 이스케이프(escape)하세요. 문자열 내부에 따옴표를 포함하려면 백슬래시를 사용하세요.
- 줄바꿈에는
\n을 사용하세요. 문자열 값 내부에서 엔터를 칠 수 없습니다. - 백슬래시를 이스케이프하세요. 경로 나 정규식 패턴에는
\\를 사용하세요.
환경 및 로직 오류
- 입력을 확인하세요.
JSON.parse()에 객체를 전달하지 마세요. - 대소문자를 주의하세요.
"userId"와"userid"는 서로 다른 키입니다. - 순서에 의존하지 마세요. JSON은 키의 순서를 보장하지 않습니다.
eval()을 절대 사용하지 마세요. 보안 위험을 방지하려면JSON.parse()를 사용하세요.- 큰 숫자를 보호하세요. 정밀도 손실을 방지하려면 64비트 ID를 문자열로 전달하세요.
try...catch블록을 사용하세요. 오류를 잡지 않으면 잘못된 JSON이 앱을 중단시킬 수 있습니다.- 순환 참조를 해결하세요. 자기 자신을 가리키는 객체는 문자열화(stringify)할 수 없습니다.
- 차이점을 파악하세요. JSON은 표준 JavaScript 객체보다 더 엄격합니다.
- 빈 문자열을 피하세요.
""대신{}또는[]를 사용하세요.
안전하게 사용하는 방법:
- 구문을 확인하기 위해 검증기(validator)를 사용하세요.
- 에디터에서 Prettier를 사용하여 파일을 자동으로 포맷팅하세요.
- 항상 파싱 로직을
try...catch블록으로 감싸세요.
출처: https://dev.to/jsdevspace/25-json-mistakes-every-developer-makes-36e6
