기본 패턴
js
const text = '{"name":"Kim","score":42}';
const data = JSON.parse(text);
const pretty = JSON.stringify(data, null, 2);설명
JSON.parse()는 JSON 문자열을 JavaScript 값으로 바꿉니다. 문자열이 유효하지 않으면SyntaxError를 던집니다.JSON.stringify()는 JavaScript 값을 JSON 문자열로 바꿉니다. 이때replacer와space인수로 필터링과 pretty-print를 조정할 수 있습니다.reviver는 parse 후 값을 변환할 때 쓰며, 중첩된 값부터 depth-first로 적용됩니다.undefined, 함수,Symbol은 JSON 값이 아니어서JSON.stringify()에서 object에서는 빠지고 array에서는null로 바뀔 수 있습니다.BigInt는 기본적으로 직렬화할 수 없어서 예외를 던집니다. 큰 정밀도 수치가 필요하면 string으로 보내는 설계를 자주 택합니다.
짧은 예제
js
const text = '{"gross_gdp":12345678901234567890}';
const parsed = JSON.parse(text, (key, value, context) => {
if (key === "gross_gdp") {
return BigInt(context.source);
}
return value;
});빠른 정리
| 함수 | 역할 |
|---|---|
JSON.parse(text) | 문자열을 값으로 변환 |
reviver | parse 후 값 변환 |
JSON.stringify(value) | 값을 문자열로 변환 |
replacer | 직렬화 대상과 형태 조정 |
space | 들여쓰기와 pretty-print |
주의할 점
JSON.stringify() 결과가 "모든 값이 그대로 보존된 문자열"이라고 생각하면 위험합니다.
undefined, 함수, Symbol, BigInt처럼 JSON 바깥 값은 빠지거나 예외가 나므로,
직렬화 전후의 타입 보존이 필요한 데이터는 별도 규칙을 설계해야 합니다.
참고 링크
2 sources