srlz

1.0.0 • Public • Published

srlz Build Status

A small serialization library that can be adapted to your own needs.

API

GenericSerializer

A generic serializer which returns the input value and is the base for every serializer implementation.

ObjectSerializer

A serializer which serializes / deserializes values based on the configures fields and corresponding serializers.

In most cases the class has to be extends by a more specific serializer class which takes care about a specific object type.

fields

Instance member

Type: Object

Each key of the objects maps to a field name and each value to a field specification.

Field specification
  • serializer (optional)
    Type: Class extends GenericSerializer
    Defines the serializer class which should be used for the field.
  • required (optional)
    Type: boolean
    Throws an error if the field is missing during deserialization.

Usage

Custom serializer

Creates serializer which convers the given array to a string by using a configured seperator.

import { GenericSerializer } from 'srlz';
// OR
const { GenericSerializer } = require('srlz');
 
class JoinedArraySerializer extends GenericSerializer {
    separator = '||';
 
    serialize(value) {
        return value.join(this.separator);
    }
 
    deserialize(value) {
        return value.splut(this.separator);
    }
}
 
const serializer = new JoinedArraySerializer();
serializer.serialize([ 1, 2, 3, 4, 5 ]);
// Output: '1||2||3||4||5'

Custom object serializer

Converts a person object into an object in which the skills are represented as string.

import { ObjectSerializer } from 'srlz';
// OR
const { ObjectSerializer } = require('srlz');
 
class PersonSerializer extends ObjectSerializer {
    fields = {
        name: {},
        skills: { serializer: JoinedArraySerializer }
    }
}
 
const serializer = new PersonSerializer();
serializer.serialize({
    name: 'John Doe',
    skills: [ 'Javascript', 'Typescript' ]
});
// Output: {
//   name: 'John Doe',
//   skills: 'Javascript||Typescript'
// }

Complex example

This example shows how to create custom serializers and how a serialization for the non scalar type Date could look like.

const { GenericSerializer, ObjectSerializer } = require('srlz');
 
const post = {
    title: 'My Blog Title',
    publishedAt: new Date('2020-08-01T09:30:00.000Z')
};
 
class ISODateSerializer extends GenericSerializer {
    serialize(value) {
        return value.toISOString();
    }
 
    deserialize(value) {
        return new Date(value);
    }
}
 
class PostSerializer extends ObjectSerializer {
    fields = {
        title: {},
        publishedAt: { serializer: ISODateSerializer }
    }
}
 
const postSerializer = new PostSerializer();
postSerializer.serialize(post);
// Output: {
//   title: 'My Blog Title',
//   publishedAt: '2020-08-01T09:30:00.000Z'
// }

Readme

Keywords

none

Package Sidebar

Install

npm i srlz

Weekly Downloads

2

Version

1.0.0

License

MIT

Unpacked Size

11.2 kB

Total Files

9

Last publish

Collaborators

  • floriangosse