Sets plus JSON

Herby Vojčík herby at
Wed Oct 3 09:56:27 PDT 2012

Nicholas C. Zakas wrote:
> After a little more experimenting with sets (still a really big fan!!),
> I've come across an interesting problem. Basically, I found myself using
> a set and then wanting to convert that into JSON for storage.
> JSON.stringify() run on a set returns "{}", because it's an object
> without any enumerable properties. I'm wondering if that's the correct
> behavior because a set is really more like an array than it is an
> object, and perhaps it would be best to define a toJSON() method for
> sets such as:
> Set.prototype.toJSON = function() {
> return Array.from(this);
It depends... you should be able to reread it, so the best thing would 
proably be to use matching set of transformers for both stringify and 
parse. I personally would rather see something like
	{ _Set_from_: Array.from(this) }
> };
> That way, JSON.stringify() would do something rational by default when
> used with sets.
> Thoughts?
> Thanks,
> Nicholas


P.S.: It would be helpful, however, to include JSON helpers for wrapping 
sets, maps etc. in some module; but it can be a library, no need to use 
spec for this.

More information about the es-discuss mailing list