Cara Mensiri Peta ES6 untuk Pemprosesan JSON
Apabila membuat penukaran daripada Objek ES6 ke Peta, ketidakupayaan untuk terus JSON.stringify a Peta boleh menjadi penghalang. Artikel ini membincangkan penyelesaian kepada cabaran ini, menggunakan hujah kedua JSON.stringify dan JSON.parse, replacer dan reviver, masing-masing.
Fungsi Pengganti Tersuai dan Reviver
Untuk menambah sokongan untuk Peta, fungsi pengganti tersuai dan menghidupkan semula boleh dibuat. Fungsi ini mengendalikan penukaran kepada dan dari 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; }
Penggunaan
Dengan fungsi tersuai yang sedia ada, penyiaran dan penyahserikan Peta menjadi mudah:
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
Deep Nesting
Teknik ini meluas ke struktur bersarang dalam yang terdiri daripada Peta, Tatasusunan dan Objek:
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);
Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri Peta ES6 dengan JSON.stringify dan JSON.parse?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!