Bagaimana untuk Mensiri dan Menyahseri Peta ES6 dengan JSON.stringify dan JSON.parse?

Mary-Kate Olsen
Lepaskan: 2024-11-20 13:00:22
asal
222 orang telah melayarinya

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

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;
  }
}
Salin selepas log masuk
function reviver(key, value) {
  if (typeof value === 'object' && value !== null) {
    if (value.dataType === 'Map') {
      return new Map(value.value);
    }
  }
  return value;
}
Salin selepas log masuk

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

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

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!

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