2015-03-16 14 views
37

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?

+2

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. –

+0

ya duno perché il downvote. Non funziona su io.js 1.4.1 o – rynop

+2

"* Le mie chiavi sono garantite come stringhe ei miei valori saranno sempre elenchi *". Quindi usa un oggetto semplice, non una mappa. – Oriol

risposta

30

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.
+4

per i curiosi: nell'ultima versione di Chrome, qualsiasi mappa viene serializzata in "{}" – Capaj

+0

Ho spiegato [qui] (http://stackoverflow.com/a/35078054/1529630) che cosa intendevo esattamente quando ho detto "puoi 't". – Oriol

+2

"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