DEV Community

Stefan Judis
Stefan Judis

Posted on • Originally published at stefanjudis.com on

TIL: JSON.stringify takes toJSON methods into consideration

I was reading this great article on JSON.stringify by Valeri Karpov when I discovered something I didn't know before.

You can use JSON.stringify to serialize objects and store them let's say in localStorage. It turns out that JSON.stringify checks if the object to serialize includes a toJSON method. If it does it will use this method to evaluate the result of the serialization.

const zoo = {
  animals: {
    list: ['cat', 'dog', 'duck'],
    // toJSON will be called by JSON.stringify
    toJSON: () => {
      return ['🐱', '🐶', '🦆']
    }
  }
}

console.log(JSON.stringify(zoo, null, 2));
Enter fullscreen mode Exit fullscreen mode

By including a toJSON method you can manipulate the data that should go into serialization. You can use this functionality to e.g. clean up logs and not store sensitive information in a database. Pretty sweet. 👌

Result of the logged object printing emojis instead of animal names

If you want to learn more you can check MDN or have a look at a chapter of Exploring JavaScript written by Axel Rauschmayer.

Oldest comments (0)