Vorrei iniziare a utilizzare ES6 Map invece di oggetti JS ma sono trattenuto perché non riesco a capire come JSON.stringify() una mappa. Le mie chiavi sono garantite come stringhe e i miei valori saranno sempre liste. Devo davvero scrivere un metodo wrapper per serializzare?Come si JSON.stringify una mappa ES6?
risposta
Non è possibile.
Le chiavi di una mappa possono essere qualsiasi cosa, inclusi gli oggetti. Ma la sintassi JSON consente solo le stringhe come chiavi. Quindi è impossibile in un caso generale.
mie chiavi sono garantiti per essere le stringhe ed i miei valori saranno sempre gli elenchi
In questo caso, è possibile utilizzare un oggetto semplice. Avrà questi vantaggi:
- Sarà possibile eseguire l'installazione su JSON.
- Funzionerà con i browser più vecchi.
- Potrebbe essere più veloce.
per i curiosi: nell'ultima versione di Chrome, qualsiasi mappa viene serializzata in "{}" – Capaj
Ho spiegato [qui] (http://stackoverflow.com/a/35078054/1529630) che cosa intendevo esattamente quando ho detto "puoi 't". – Oriol
"Potrebbe essere più veloce" - Avete qualche fonte su questo? Immagino che una semplice mappa hash deve essere più veloce di un oggetto in piena regola, ma non ho prove. :) – Lilleman
Curioso sul motivo per cui questo è stato downvoted? 'JSON.stringify' non funziona su una mappa, almeno quando si utilizzano versioni di Chrome e FF con margini sanguinanti, quindi sembra una domanda legittima. –
ya duno perché il downvote. Non funziona su io.js 1.4.1 o – rynop
"* Le mie chiavi sono garantite come stringhe ei miei valori saranno sempre elenchi *". Quindi usa un oggetto semplice, non una mappa. – Oriol