JSON.stringify() 및 ES6 Maps
ES6 Maps는 JavaScript 개체에 대한 강력한 대안을 제공하지만 JSON.stringify()를 사용하여 직렬화합니다. ) 어려울 수 있습니다. 이 장애물을 극복하기 위해 JSON.stringify()의 대체 기능과 JSON.parse()의 해당 부활 기능을 활용할 수 있습니다.
교체 기능을 사용한 사용자 정의 직렬화
교체 기능을 사용하면 객체가 직렬화되는 방식을 사용자 정의할 수 있습니다. 이 경우 지도 객체를 처리하도록 수정할 수 있습니다.
function replacer(key, value) { if(value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), // or with spread: value: [...value] }; } else { return value; } }
리바이버를 사용한 사용자 정의 역직렬화
마찬가지로, 부활 기능을 사용하면 객체가 역직렬화되는 방식을 변경할 수 있습니다. . 이를 사용하여 지도 객체를 복원할 수 있습니다.
function reviver(key, value) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
사용
이러한 함수를 정의하면 이제 효과적으로 JSON.stringify() 및 JSON.parse( ) 지도 객체:
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
심층 중첩
제공되는 솔루션은 아래 설명과 같이 배열, 개체 및 맵의 심층 중첩을 지원합니다.
const originalValue = [ new Map([['a', { b: { c: new Map([['d', 'text']]) } }]]) ]; const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
위 내용은 JSON.stringify() 및 JSON.parse()를 사용하여 ES6 맵을 직렬화 및 역직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!