首页 > web前端 > js教程 > 为什么 JSON.stringify 在序列化错误时返回空对象?

为什么 JSON.stringify 在序列化错误时返回空对象?

Mary-Kate Olsen
发布: 2024-12-02 15:55:11
原创
876 人浏览过

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

使用 JSON.stringify 字符串化错误是否不可能?

尝试使用 JSON.stringify 序列化错误实例会导致空对象。此行为是由错误的隐藏属性描述符引起的。

为什么 JSON.stringify 失败:

错误实例的属性描述符设置为 enumerable: 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(错误, Object.getOwnPropertyNames(错误))。这提供了对不可枚举属性的访问。

const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
登录后复制

其他解决方法:

  • 自定义错误对象:创建自定义错误对象具有所需的属性并序列化它们。
  • 属性提取: 使用 error.stack 和 error.message 手动提取特定错误属性。

以上是为什么 JSON.stringify 在序列化错误时返回空对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板