>웹 프론트엔드 >JS 튜토리얼 >오류를 직렬화할 때 JSON.stringify가 빈 개체를 반환하는 이유는 무엇입니까?

오류를 직렬화할 때 JSON.stringify가 빈 개체를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-02 15:55:11857검색

Why Does JSON.stringify Return an Empty Object When Serializing an Error?

JSON.stringify를 사용하여 오류를 문자열화하는 것이 불가능합니까?

JSON.stringify를 사용하여 오류 인스턴스를 직렬화하려고 하면 빈 개체가 생성됩니다. 이 동작은 오류의 숨겨진 속성 설명자에서 발생합니다.

JSON.stringify가 실패하는 이유:

오류 인스턴스의 속성 설명자는 열거 가능: false로 설정되어 오류가 발생하는 것을 방지합니다. 속성이 문자열화에 포함되지 않도록 합니다.

속성 탐색 및 설명자:

const error = new Error('sample message');
const propertyNames = Object.getOwnPropertyNames(error);
propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));

출력:

stack { get: [Function], set: [Function], enumerable: false, configurable: true }
arguments { value: undefined, writable: true, enumerable: false, configurable: true }
type { value: 'custom message', writable: true, enumerable: false, configurable: true }
message { value: 'custom message', writable: true, enumerable: false, configurable: true }

Object.getOwnPropertyNames를 사용한 해결 방법:

문자열화에 오류 속성을 포함하려면, JSON.stringify(err, Object.getOwnPropertyNames(err)). 이는 열거 불가능한 속성에 대한 액세스를 제공합니다.

const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));

추가 해결 방법:

  • 사용자 정의 오류 개체: 사용자 정의 오류 개체 만들기 원하는 속성을 사용하여 직렬화합니다.
  • 속성 추출: error.stack 및 error.message를 사용하여 수동으로 특정 오류 속성을 추출합니다.

위 내용은 오류를 직렬화할 때 JSON.stringify가 빈 개체를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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