2015-03-16 5 views
37

Ich möchte ES6 Map anstelle von JS-Objekten verwenden, aber ich bin zurückgehalten, weil ich nicht herausfinden kann, wie zu JSON.stringify() eine Karte. Meine Schlüssel sind garantiert Zeichenfolgen und meine Werte werden immer Listen sein. Muss ich wirklich eine Wrapper-Methode zum Serialisieren schreiben?Wie können Sie eine ES6-Map JSON.stringieren?

+2

Neugierig, warum das heruntergeregelt wird? 'JSON.stringify' funktioniert nicht auf einer Karte, zumindest nicht mit den neuesten Versionen von Chrome und FF, daher scheint es eine legitime Frage zu sein. –

+0

ya duno warum der downvote. Funktioniert nicht auf io.js 1.4.1 entweder – rynop

+2

"* Meine Schlüssel sind garantiert Zeichenfolgen und meine Werte werden immer Listen *". Verwenden Sie dann ein einfaches Objekt, keine Karte. – Oriol

Antwort

30

Sie können nicht.

Die Schlüssel einer Karte können alles sein, einschließlich Objekte. Die JSON-Syntax erlaubt jedoch nur Zeichenfolgen als Schlüssel. So ist es in einem allgemeinen Fall unmöglich.

Meine Tasten sind garantiert Strings und meine Werte werden immer Listen

In diesem Fall, können Sie ein einfaches Objekt verwenden. Es wird diese Vorteile haben:

  • Es kann zu JSON beschriftet werden.
  • Es funktioniert mit älteren Browsern.
  • Es könnte schneller sein.
+4

für die Neugierigen-in der neuesten Chrom, jede Karte serialisiert in '{}' – Capaj

+0

Ich habe [hier] erklärt (http://Stackoverflow.com/a/35078054/1529630) was genau ich meinte, als ich sagte "Sie können "t". – Oriol

+2

"Es könnte schneller sein" - Haben Sie eine Quelle dazu? Ich stelle mir vor, eine einfache Hash-Map muss schneller sein als ein vollwertiges Objekt, aber ich habe keinen Beweis. :) – Lilleman