Parseus is a javascript library written in Typescript which allow marshall/unmarshall JSON into class instance. This library is able to run in NodeJS, Typescript or any JS platform. API Docs
class Person {
@Field({ type: 'string', name: 'person_name' })
name
@Field({ readOnly: true, name: 'person_age', type: 'number' })
age
@Field({ name: 'person_last_name', type: 'string' })
lastName
@Field({ name: 'person_gender', default: 'M', type: 'string' })
gender
@Field({ name: 'person_created_at', type: 'date' })
createdAt
}
const data = {
person_name: 'Jhon',
person_last_name: 'Smith',
person_age: 25,
person_created_at: '2018-01-01T12:00:00.000Z'
}
/**
* Returns an instance of Person like
* {
* name:'Jhon',
* lastName: 'Smith',
* age: 25,
* gender: 'M',
* createdAt: Mon Jan 01 2018 08:00:00 GMT-0400 (Atlantic Standard Time) {}
* }
**/
const person = Parseus.decode(data).to(Person)
person.gender = 'F'
person.age = 18
person.name = 'Sara'
/**
* The second parameter is optional, but if
* the class instance has been mutated
* we should pass the original class for references
*
* Returns an object with the next structure { [key:string]: any }
* {
* "person_name": "Sara",
* "person_last_name": "Smith",
* "person_age": 18,
* "person_gender": F,
* "person_created_at": "2018-01-01T12:00:00.000Z"
* }
**/
const personMarshalled = Parseus.encode(person, Person)
class Person {
@Field({ type: 'string', name: 'person_name' })
name?: string
@Field({ readOnly: true, name: 'person_age' })
age?: number
@Field({ name: 'person_last_name' })
lastName?: string
@Field({ name: 'person_gender', default: 'M' })
gender?: string
@Field({ name: 'person_created_at', type: 'date' })
createdAt?: Date
}
const data = {
person_name: 'Jhon',
person_last_name: 'Smith',
person_age: 25,
person_created_at: '2018-01-01T12:00:00.000Z'
}
/**
* Returns an instance of Person like
* {
* name:'Jhon',
* lastName: 'Smith',
* age: 25,
* gender: 'M',
* createdAt: Mon Jan 01 2018 08:00:00 GMT-0400 (Atlantic Standard Time) {}
* }
**/
const person = Parseus.decode(data).to(Person)
person.gender = 'F'
person.age = 18
person.name = 'Sara'
/**
* The second parameter is optional, but if
* the class instance has been mutated
* we should pass the original class for references
*
* Returns an object with the next structure { [key:string]: any }
* {
* "person_name": "Sara",
* "person_last_name": "Smith",
* "person_age": 18,
* "person_gender": F,
* "person_created_at": "2018-01-01T12:00:00.000Z"
* }
**/
const personMarshalled = Parseus.encode(person, Person)
Install the npm package:
npm install parseus --save
or using yarn yarn add @rijudev/parseus
You need to install reflect-metadata
shim:
npm install reflect-metadata --save
or using yarn yarn add reflect-metadata
and import it somewhere in the global place of your app:
import 'reflect-metadata'
Property | Description | Type | Default |
---|---|---|---|
type | Field type. Must be one of the values from the FieldType | string | 'string' |
name | Key name in source object. if this value is not provided it takes the model field's name wrapped | string | - |
isVirtual | Indicates if field's value is ignored when marshall Object | boolean | false |
default | Indicates the initial field's value | any | - |
readOnly | Indicates if field's value is read only (freeze) | boolean | false |
fixed | The scale for a decimal (exact numeric) field, which represents the number of digits to the right of the decimal point | number | 6 |
transformer | Specifies a value transformer that is to be used to (un)marshall the current field when (un)marshall | ITransformer | - |
factory | Indicates the field's model class of target | class | - |
Property | Description | Type | Default |
---|---|---|---|
to | Used to marshall data when writing to the new object | Function | - |
from | Used to unmarshall data when reading from object | Function | - |
Property | Description | Type | Default |
---|---|---|---|
key | key name in source object | string | - |
options | Field type options field's | IFieldOptions | - |
data | complete mapped source object | object | - |
Still in progress...
Field decorator is used to mark a specific class property as a decoded object field. Only properties decorated with this decorator will be persisted after encode and decode
Clone the target object if it's any array or an object. If the value is a primitive type it will returned as is.
Returns object metadata from model using our custom PARSEUS_META_KEY
Returns the proper FieldType value from the Constructor class
Converts the targetKey field into a readyonly field into context.
Generated using TypeDoc
Field Types to encode/decode