Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
JSON serializer that handles Dates, RegExps, Functions or any other type you want
branch: master
Failed to load latest commit information.
lib Implemented simple function serializater
test Implemented simple function serializater
.gitignore Added tests for builtin serializers
Makefile Release v0.0.1 Updated README
package.json Release v0.0.2


Library that provides JSON serialization of javascript objects not supported natively by JSON such as Dates, RegExps, Functions or any other user-defined class instance.


npm install super-json


// Nodejs
> var superJson = require('super-json');

// Browser
> var superJson = window.superJson;

> var myJson = superJson.create({
...  magic: '#!',
...  serializers: [
...    superJson.dateSerializer,
...    superJson.regExpSerializer,
...    superJson.functionSerializer
...  ]

// or just
> var myJson = superJson.create(); // The above options are defaults.

> myJson.stringify({birth: new Date(0), someRegex: /abc/gi}); 

> myJson.parse(myJson.stringify({birth: new Date(0), someRegex: /abc/gi})) 
{ birth: Wed Dec 31 1969 21:00:00 GMT-0300 (BRT),
  someRegex: /abc/gi }

It is possible to use 'myJson' as a drop-in replacement for the global JSON object, but if the replacer/reviver arguments are used the custom serialization will not work.


This is implemented using the replacer/reviver arguments, and serializes custom types to a string that looks like this: {magic}{serializer name}{json array containing constructor arguments}. The magic string is escaped when serializing strings, so user input doesn't need to be validated.

Customize serialization

Just pass an object that looks like this(example from the date serializer):

dateSerializer = {
  serialize: function(date) {
    return [date.getTime()];
  deserialize: function(time) {
    return new Date(time);
  isInstance: function(obj) {
    return obj instanceof Date;
  name: 'Date'
Something went wrong with that request. Please try again.