Yet another serialize module for Node.js, with unique feature that deserialize to its original class based Object.
Amoung many serializers, jsclass-serializer module is unique for its class restore ability. That is, deserializing does not result in creating Object object, but original class-based object are restored.
Just extend your class based on "Serializable" class. And everything works.
You can save your serialized json text to file, and load it back easily. You can also load all objects under storage path.
const Serializable = require('jsclass-serializer');
// Save and load to/from file
class SampleClass extends Serializable{};
let source = new SampleClass();
Serializable.setStoragePath('./data/');
source.saveToFile();
let target = new SampleClass();
target.loadFromFile(source.uuid);
//load all objects under storage path
let array_of_object = Serializable.loadAll();
"jsclass-serializer" can de/serialize built-in Date type object.
When developer decide to extend his/her class from Serializable, developer
should give up to extend from other classes. That is a huge limitation, while
Java Script allows only single inheritance.
Now its not a limitation any more! "jsclass-serializable" can be used with
"jsclass-mixin"!
Check out the code below!
// Serializable with jsclass-mixin
const Serializable = require('jsclass-serializer');
const mix = require('jsclass-mixin');
class B {};
class A extends mix(B, Serializable) {
constructor() {
super();
//call Serializable constructor with "this" makes class A serializable
Serializable.new(this);
}
};
let source = new A();
let json = source.serialize();
let target = Serializable.deserialize(json);
//below code return true!
console.log(target instanceof A);
Class serializer consumes global with namespace "serializable_classes". Within this name space, every constructor of Serializable subclasses are stored. This is because of its module-scoped nature of node, by default class-serializer can not recognize target class definition. Please note that this results in extra node instance memory space consuming.
Serializable attaches property "classname" and "uuid" to its subclasses.
"classname" is to retrieve original class info, and "uuid" is use as filename
when you save/load to/from files.
Please take a look at test/test.js for more sample codes.
const Serializable = require('jsclass-serializer');
// Serialize and Deserialize Using Static Methods
class SampleClass extends Serializable{};
let c = new SampleClass();
let json = Serializable.serialize(c);
let o = Serializable.deserialize(json);
//o is not a [Object object], but an instance of SampleClass
//below code returns, true.
console.log(o instanceof SampleClass);
const Serializable = require('jsclass-serializer');
// Serialize and Deserialize Using Normal Methods
//
class SampleClass extends Serializable{};
let c1 = new SampleClass();
c1.a = "A";
let json = c1.serialize();
let c2 = new SampleClass();
c2.deserialize(json);
//You can deserialize back to its original class.
//below code returns "A"
console.log(c2.a);
- jsclass-serializer
A module for de/serializing objects.
- constructor(baseclass)
"jsclass-serializer" provides features to serialize and deserialize to memory and to file in json format. Deserializing returns instance of original class.
A module for de/serializing objects.
Kind: global class
- Serializable
- new Serializable()
- instance
- .serialize() ⇒
json
- .saveToFile() ⇒
json
- .deserialize(json)
- .loadFromFile(uuid)
- .serialize() ⇒
- static
- .setStoragePath(p)
- .saveToFile(o, filename) ⇒
json
- .loadFromFile(filename) ⇒
any
- .loadAll(Callback) ⇒
Array
- .serialize(o) ⇒
json
- .deserialize(json)
Serializable object and deserialize back to its original class instance. Also supports save/load to/from file system.
Serialize object to json format.
Kind: instance method of Serializable
Returns: json
- Json text.
Save serialized json object to file. Where directory path would be the path previously set by setStoragePath(), and file name would be set equally to given objects uuid.
Kind: instance method of Serializable
Returns: json
- Json text.
Deserialize json text to object
Kind: instance method of Serializable
Param | Type | Description |
---|---|---|
json | json |
[description] |
Load json text from file and convert to object. Where directory path would be the path previously set by setStoragePath().
Kind: instance method of Serializable
Param | Type | Description |
---|---|---|
uuid | string |
Unique identifier to specify the file to load from. |
Set directory path to save/load serialized information to/from file.
Kind: static method of Serializable
Param | Type | Description |
---|---|---|
p | string |
Absolute or relative directory path |
Save serialized json object to file. Where directory path would be the path previously set by setStoragePath(). This method can serialize any type of object.
Kind: static method of Serializable
Returns: json
- Json text.
Param | Type | Description |
---|---|---|
o | any |
Object to serialize. |
filename | string |
Filename to save object. |
Load json text from file and convert to object. Where directory path would be the path previously set by setStoragePath(). This method can deserialize any file with json text.
Kind: static method of Serializable
Returns: any
- Deserialized object.
Param | Type | Description |
---|---|---|
filename | string |
Filename to load json from. |
Load all json files under storage directory.
Kind: static method of Serializable
Returns: Array
- Retrieved objects.
Param | Type | Description |
---|---|---|
Callback | function |
function applies to retrieved objects. |
Serialize object to json format. This method can serialize any type of object.
Kind: static method of Serializable
Returns: json
- Json text.
Param | Type | Description |
---|---|---|
o | any |
Object to serialize. |
Deserialize json text to object This method can deserialize any file with json text.
Kind: static method of Serializable
Param | Type | Description |
---|---|---|
json | json |
[description] |
"jsclass-serializer" provides features to serialize and deserialize to memory and to file in json format. Deserializing returns instance of original class.
Kind: global function
Param | Type | Description |
---|---|---|
baseclass | any |
Set "this", when use with jsclass-mixin. |