Skip to content
Serialization using Typescript decorators
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
test
.babelrc
.codeclimate.yml
.gitignore
.npmrc
.travis.yml
LICENSE
README.md
index.ts
package.json
tsconfig.json

README.md

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());
You can’t perform that action at this time.