I'm using ES6 I transpile using Babel into ordinary JavaScript.
I want to serialise objects into JSON format and am wondering if ES5,ES6 offers a convenient function to do so.
For Maps
and Sets
there is a toJSON()
-function proposed in ES7
I'm using ES6 I transpile using Babel into ordinary JavaScript.
I want to serialise objects into JSON format and am wondering if ES5,ES6 offers a convenient function to do so.
For Maps
and Sets
there is a toJSON()
-function proposed in ES7
You can use JSON.stringify
and pass any kind of variable to it (given that it can be represented in JSON).
It works in all current browsers; in case you need a fallback for a really old browser, you can use Crockford's JSON-js.
However, keep in mind that, regarding objects, only public properties are serialized. There's no a generic way to serialize function variables etc. on the fly.
This is why some special object types provide a toJSON
or similar method. In order to use such a function for arbitrary objects, you must pass a function as second parameter to JSON.stringify
which checks for the existence of a toJSON
function.
For example, the following should work (not tested, just from the top of my mind):
var jsonString = JSON.stringify(someLargeObject, function(key, value){
return (value && typeof value.toJSON === 'function')
? value.toJSON()
: JSON.stringify(value);
});
If your someLargeObject
contains a sub-object with a toJSON
method, this code would use the object's implementation, otherwise use JSON.stringify
.