3

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

0

1 Answer 1

8

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.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.