Bagaimanakah saya Boleh Mensiri dan Menyahseri Peta ES6 dengan JSON.stringify dan JSON.parse?

DDD
Lepaskan: 2024-11-23 15:28:17
asal
491 orang telah melayarinya

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

JSON.stringify untuk Peta ES6

Apabila berhijrah daripada objek JavaScript ke Peta ES6, sokongan JSON.stringify menjadi penting. Artikel ini menangani cabaran mensiri Peta untuk penghantaran JSON.

Menggunakan JSON.stringify Replacer

JSON.stringify menawarkan hujah kedua, pengganti, yang boleh meningkatkan fungsinya . Tentukan fungsi pengganti yang mengendalikan objek Peta:

function replacer(key, value) {
  if(value instanceof Map) {
    return {
      dataType: 'Map',
      value: Array.from(value.entries()),
    };
  } else {
    return value;
  }
}
Salin selepas log masuk

Deserialisasi dengan JSON.parse Reviver

Begitu juga, JSON.parse juga mempunyai argumen reviver untuk menyesuaikan penciptaan objek semasa penyahserikatan:

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

Untuk mensiri dan menyahsiri Peta ES6 menggunakan fungsi ini:

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

Pengganti dan penyegar boleh mengendalikan bersarang dalam struktur data yang mengandungi tatasusunan, objek dan peta:

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 Bagaimanakah saya Boleh 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan