serializer/README.md

1.7 KiB

typescript/serializer

Build Status

About

This library offers a generic serialization system for Javascript.

Deep objects state may be serialized to a string, and reconstructed back.

Supported data types include:

  • Primitive types (number, bool, string...)
  • Set and Map standard objects
  • Class instances, as long as the class list is exhaustively provided to the serializer

Be warned that the resulting serialized value may be quite large and uncompressed.

Import

In deno:

import { Serializer } from "https://js.thunderk.net/serializer/mod.ts";

In browser:

<script type="module">
import { Serializer } from "https://js.thunderk.net/serializer/mod.js";
</script>

Use

Suppose you have 2 classes Class1 and Class2, whose instances you want to serialize:

Class1 { /* [...] */ }
Class2 { /* [...] */ }

// Here is the example object we want to serialize to a string
const obj = {
  a: [1, "a", new Class1()],
  b: new Class2("x"),
  c: new Class3(),
};

// We prepare the serializer, providing the class namespace
const namespace = {
  Class1,
  Class2,
};
const serializer = new Serializer(namespace);

// Optionally, some class instances may be ignored (they will be replaced by *undefined*)
serializer.addIgnoredClass(Class3);

// Serialize the object to a string
const state = serializer.serialize(obj);

// Reconstruct the object back
const nobj = serializer.unserialize(state);

console.log(nobj.a[0]);
// output: 1

console.log(nobj.b instance of Class2);
// output: true

console.log(nobj.c);
// output: undefined