JSON.stringify pour ES6 Maps
Lors de la migration d'objets JavaScript vers ES6 Maps, la prise en charge de JSON.stringify devient essentielle. Cet article aborde le défi de la sérialisation de Maps pour la transmission JSON.
Utilisation de JSON.stringify Replacer
JSON.stringify propose un deuxième argument, replacer, qui peut améliorer sa fonctionnalité. . Définissez une fonction de remplacement qui gère les objets Map :
function replacer(key, value) { if(value instanceof Map) { return { dataType: 'Map', value: Array.from(value.entries()), }; } else { return value; } }
Désérialisation avec JSON.parse Reviver
De même, JSON.parse a également un argument reviver pour personnaliser la création d'objets pendant désérialisation :
function reviver(key, value) { if(typeof value === 'object' && value !== null) { if (value.dataType === 'Map') { return new Map(value.value); } } return value; }
Utilisation
Pour sérialiser et désérialiser une carte ES6 à l'aide de ces fonctions :
const originalValue = new Map([['a', 1]]); const str = JSON.stringify(originalValue, replacer); const newValue = JSON.parse(str, reviver); console.log(originalValue, newValue);
Deep Nesting
Le remplaçant et le relanceur peuvent gérer des structures de données profondément imbriquées contenant des tableaux, objets et cartes :
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);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!