>웹 프론트엔드 >JS 튜토리얼 >JSON.stringify 및 JSON.parse를 사용하여 ES6 맵을 직렬화 및 역직렬화하는 방법은 무엇입니까?

JSON.stringify 및 JSON.parse를 사용하여 ES6 맵을 직렬화 및 역직렬화하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-20 13:00:22295검색

How to Serialize and Deserialize ES6 Maps with JSON.stringify and JSON.parse?

JSON 처리를 위해 ES6 맵을 직렬화하는 방법

ES6 객체에서 맵으로 전환할 때 JSON.stringify를 직접 수행할 수 없음 지도가 방해가 될 수 있습니다. 이 기사에서는 JSON.stringify와 JSON.parse의 두 번째 인수인 교체 및 부활 기능을 각각 사용하여 이 문제에 대한 솔루션을 자세히 살펴봅니다.

사용자 정의 대체 기능 및 부활 기능

지도에 대한 지원을 추가하기 위해 맞춤 대체 기능과 부활 기능을 생성할 수 있습니다. 이러한 함수는 JSON과의 변환을 처리합니다.

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;
}

사용

맞춤 함수를 사용하면 지도 직렬화 및 역직렬화가 간단해집니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.