Rumah > hujung hadapan web > tutorial js > Mengapa JSON.stringify Mengembalikan Objek Kosong Apabila Mensiri Ralat?

Mengapa JSON.stringify Mengembalikan Objek Kosong Apabila Mensiri Ralat?

Mary-Kate Olsen
Lepaskan: 2024-12-02 15:55:11
asal
876 orang telah melayarinya

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

Adakah Mustahil untuk Mengurangkan Ralat Menggunakan JSON.stringify?

Percubaan untuk mensirikan contoh ralat menggunakan JSON.stringify menghasilkan objek kosong. Tingkah laku ini timbul daripada deskriptor sifat tersembunyi bagi ralat.

Mengapa JSON.stringify Gagal:

Penerangan sifat untuk kejadian ralat ditetapkan dengan enumerable: false, menghalangnya sifat daripada dimasukkan dalam rentetan.

Meneroka Sifat dan Deskriptor:

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

Output:

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 }
Salin selepas log masuk

Penyelesaian Menggunakan Object.getOwnPropertyNames:

Untuk memasukkan sifat ralat dalam rentetan, gunakan JSON.stringify(err, Object.getOwnPropertyNames(err)). Ini memberikan akses kepada sifat yang tidak boleh dikira.

const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Salin selepas log masuk

Penyelesaian Tambahan:

  • Objek Ralat Tersuai: Cipta objek ralat tersuai dengan sifat yang diingini dan bersirikannya.
  • Hartanah Pengekstrakan: Ekstrak sifat ralat tertentu secara manual menggunakan error.stack dan error.message.

Atas ialah kandungan terperinci Mengapa JSON.stringify Mengembalikan Objek Kosong Apabila Mensiri Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan