serializer/README.md

78 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2020-05-13 10:36:23 +00:00
# typescript/serializer
[![Build Status](https://thunderk.visualstudio.com/typescript/_apis/build/status/serializer?branchName=master)](https://dev.azure.com/thunderk/typescript/_build?pipelineNameFilter=serializer)
2021-07-18 21:12:32 +00:00
## 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:
```typescript
import { Serializer } from "https://js.thunderk.net/serializer/mod.ts";
```
In browser:
```html
<script type="module">
import { Serializer } from "https://js.thunderk.net/serializer/mod.js";
</script>
2021-07-18 21:12:32 +00:00
```
## Use
Suppose you have 2 classes Class1 and Class2, whose instances you want to
serialize:
```typescript
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
```