0.2.5 • Published 5 years ago

jsclass-serializer v0.2.5

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Build Status

jsclass-serializer

Yet another serialize module for Node.js, with unique feature that deserialize to its original class based Object.

What Makes class-serializer Unique

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.

How to Use

Just extend your class based on "Serializable" class. And everything works.

Save and/or Load from File (new @0.2.0)

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();

Date Ready

"jsclass-serializer" can de/serialize built-in Date type object.

Works with "jsclass-mixin"

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);

Some Notes

Use of Global Namespace

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.

Property "classname" and "uuid" Are Attached Automatically

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.

Code Usage

Please take a look at test/test.js for more sample codes.

usage1:

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);

usage2:

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);

API

Modules

Classes

Functions

jsclass-serializer

A module for de/serializing objects.

Serializable

Kind: global class

new Serializable()

Serializable object and deserialize back to its original class instance. Also supports save/load to/from file system.

serializable.serialize() ⇒ json

Serialize object to json format.

Kind: instance method of Serializable
Returns: json - Json text.

serializable.saveToFile() ⇒ json

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.

serializable.deserialize(json)

Deserialize json text to object

Kind: instance method of Serializable

ParamTypeDescription
jsonjsondescription

serializable.loadFromFile(uuid)

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

ParamTypeDescription
uuidstringUnique identifier to specify the file to load from.

Serializable.setStoragePath(p)

Set directory path to save/load serialized information to/from file.

Kind: static method of Serializable

ParamTypeDescription
pstringAbsolute or relative directory path

Serializable.saveToFile(o, filename) ⇒ json

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.

ParamTypeDescription
oanyObject to serialize.
filenamestringFilename to save object.

Serializable.loadFromFile(filename) ⇒ any

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.

ParamTypeDescription
filenamestringFilename to load json from.

Serializable.loadAll(Callback) ⇒ Array

Load all json files under storage directory.

Kind: static method of Serializable
Returns: Array - Retrieved objects.

ParamTypeDescription
Callbackfunctionfunction applies to retrieved objects.

Serializable.serialize(o) ⇒ json

Serialize object to json format. This method can serialize any type of object.

Kind: static method of Serializable
Returns: json - Json text.

ParamTypeDescription
oanyObject to serialize.

Serializable.deserialize(json)

Deserialize json text to object This method can deserialize any file with json text.

Kind: static method of Serializable

ParamTypeDescription
jsonjsondescription

constructor(baseclass)

"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

ParamTypeDescription
baseclassanySet "this", when use with jsclass-mixin.
0.2.5

5 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.5

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago