ts-serialize
TypeScript icon, indicating that this package has built-in type declarations

1.3.2 • Public • Published

Build Status npm versionTest Coverage

ts-serialize

Serialization tool using Typescript decorators and reflect-metadata.

Usage

Example with two classes :

import {Serializable, Serialize, SerializeOpt, SerializeArray} from "ts-serialize"
 
class Role extends Serializable {
 
    // Serialize knows the primitive types
    // So it can automatically validate and convert it
    @Serialize()
    public id : string;
    
    @Serialize()
    public order : number;
}
class User extends Serializable {
 
    // You can change the property name 
    // (`id` for the class, `identifier` for the json)
    @Serialize('identifier')
    public id : string;
 
    @Serialize()
    private age : number;
    
    @Serialize()
    public language : string;
 
    // For optionals, you need to use a special decorator
    @SerializeOpt( String )
    public name : Optional< string >;
 
    // For arrays, you need to use a special decorator
    @SerializeArray( User )
    public children : User[];
 
    // Composition works naturally
    @Serialize()
    public role : Role;
    
    // You can apply your own transformers
    @Serialize(() => Math.random() * 1000)
    public random : number;
}

Now, validate you json using one of those and get either errors or your serialized object/array

static fromString< T >(str: string): Either< Error[], T >;
 
static fromStringAsArray< T >(str: string): Either< Error[], Array< T > >;
 
static fromJsObject< T >(jsObject: JsObject, jsonPath: string[] = [], classPath: string[] = []): Either< Error[], T >;
 
static fromJsArray< T >(jsArray: JsArray, jsonPath: string[] = [], classPath: string[] = []): Either< Error[], T[] >;

And convert your instances to json using :

const user = new User();
console.log(user.toJson());

Dependents (3)

Package Sidebar

Install

npm i ts-serialize

Weekly Downloads

21

Version

1.3.2

License

MIT

Last publish

Collaborators

  • cke