1. ホーム
  2. javascript

[解決済み] 集合をJSONで文字列化する

2022-06-07 20:16:12

質問

どのように JSON.stringify() a 設定 ?

Chromium 43で動作しなかったもの。

var s = new Set(['foo', 'bar']);

JSON.stringify(s); // -> "{}"
JSON.stringify(s.values()); // -> "{}"
JSON.stringify(s.keys()); // -> "{}"

シリアライズされた配列と同じようなものが得られると予想されます。

JSON.stringify(["foo", "bar"]); // -> "["foo","bar"]"

どのように解決するのですか?

JSON.stringify は、セットに格納されているデータはプロパティとして格納されていないため、セットと直接連携することはできません。

しかし、セットを配列に変換することはできます。そうすれば、適切に文字列化することができます。

以下のどれかでうまくいきます。

JSON.stringify([...s]);
JSON.stringify([...s.keys()]);
JSON.stringify([...s.values()]);
JSON.stringify(Array.from(s));
JSON.stringify(Array.from(s.keys()));
JSON.stringify(Array.from(s.values()));