serializer/README.md
2019-09-17 08:44:25 +00:00

72 lines
1.9 KiB
Markdown

tk-serializer
=============
[![pipeline status](https://gitlab.com/thunderk/tk-serializer/badges/master/pipeline.svg)](https://gitlab.com/thunderk/tk-serializer/commits/master)
[![coverage report](https://gitlab.com/thunderk/tk-serializer/badges/master/coverage.svg)](https://gitlab.com/thunderk/tk-serializer/commits/master)
[![npm version](https://img.shields.io/npm/v/tk-serializer.svg)](https://npmjs.com/tk-serializer)
[![npm size](https://img.shields.io/bundlephobia/min/tk-serializer.svg)](https://bundlephobia.com/result?p=tk-serializer)
About
-----
This library offers a generic serialization system for Javascript.
Deep objects state may be serialized to a string, and reconstructed back.
Class instances are reconstructed properly, as long as they are in the provided namespace. Circular references are handled.
Be warned that resulting serialized value may be quite large.
Typescript definitions are included.
Issues can be reported on [GitLab](https://gitlab.com/thunderk/tk-serializer/issues).
Install
-------
Import in node:
```shell
npm install tk-serializer
```
```javascript
import { Serializer } from "tk-serializer";
```
Import in browser:
```html
<script src="https://unpkg.com/tk-serializer"></script>
```
```javascript
const Serializer = tkSerializer.Serializer;
```
Use
---
Suppose you have 2 classes Class1 and Class2, whose instances you want to serialize:
```javascript
const namespace = {
Class1,
Class2
};
const obj = {
a: [1, "a", new Class1()],
b: new Class2("x"),
c: new Class3()
};
let 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
let state = serializer.serialize(obj);
// Reconstruct the object back (*c* will be undefined)
let nobj = serializer.unserialize(state);
```