본문 바로가기
프로그래밍/자바스크립트

프로그래밍 「 자바스크립트 편」프론트엔드 엔지니어로서: 알아야 할 JSON.stringify에 대한 9가지 비밀

by grapedoukan 2023. 7. 2.
728x90

님이 촬영 한 사진 페르난도 브라질 on Unsplash

프론트엔드 개발 엔지니어로서 JSON.stringify를 사용했어야 하지만 그 비밀을 모두 알고 있습니까?

옛날 옛적에 나는 그것 때문에 직장에서 돌이킬 수 없는 실수를 저질렀다. 내가 더 일찍 그것에 대해 알았 더라면,이 비극은 일어나지 않았을 것입니다.

JSON.stringify 이해

기본적으로 JSON.stringify는 객체를 JSON 문자열로 변환합니다.

동시에 JSON.stringify에는 다음과 같은 규칙이 있습니다.

1. , , 및 는 유효한 JSON 값이 아닙니다. 변환 중에 이러한 값이 발견되면 생략되거나(개체에서 발견된 경우) 배열에서 발견된 경우로 변경됩니다 . 또는  같은 "순수한" 값을 전달할 때 반환할 수 있습니다.undefinedFunctionSymbolnullJSON.stringify()undefinedJSON.stringify(function() {})JSON.stringify(undefined)

개체에서

배열의 null

형식만

2., , 객체 는 전통적인 변환 의미론에 따라 문자열화 중에 해당 기본 값으로 변환됩니다.BooleanNumberString

3. 모든 키 속성은 함수를 사용하는 경우에도 완전히 무시됩니다 .Symbolreplacer

4. 숫자  , , 그리고 값 이 모두 고려됩니다.InfinityNaNnullnull

5. 값에 메서드가 있는 경우 직렬화할 데이터를 정의해야 합니다.toJSON()

6. 의 인스턴스는 문자열을 반환하여 함수를 구현합니다(와 동일). 따라서 문자열로 처리됩니다.DatetoJSON()date.toISOString()

7. 순환 참조가 포함된 개체에서 이 메서드를 실행하면 오류가 발생합니다.

8. 다른 모든 인스턴스(, , , 및 )에는 열거 가능한 속성만 직렬화됩니다.ObjectMapSetWeakMapWeakSet

9. BigInt 유형의 값을 변환하려고 할 때 오류가 발생합니다.

JSON.stringify 구현

함수를 이해하는 가장 좋은 방법은 직접 구현하는 것입니다. 아래에서는 JSON.stringify를 시뮬레이트하는 간단한 함수를 작성했습니다.

 

소스 코드

시험을 치르다

 

테스트 코드

728x90