Skip to content

olaferlandsen/Typescript-Json-Object-Mapper

Repository files navigation

(TypeScript) Json-Object-Mapper

Donate

This a simple package to mapping a json object.

Getting Started

Install

npm install typescript-json-object-mapper
yarn add typescript-json-object-mapper

Configure

To work with decorators, you need first enable emitDecoratorMetadata y experimentalDecorators on you tsconfig.json. Example:

{
    "compilerOptions": {
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true
    }
}

Create you own Views

This example tries to show all possible cases in which you might need to use this utility.

class UserView extends JsonView {
    @JsonProperty
    username: string;
    
    @JsonProperty({
        ignore: true
    })
    password: string;
    
    @JsonProperty({
        topic: 'custom'
    })
    birthday: string;
    @JsonProperty({
        topic: 'custom2'
    })
    phone: string;
}

Define you data object

const json = {
    username: "annon",
    password: "12345678",
    birthday: "1992-03-20",
    phone: "+0123456789"
};

Serilize(without topic's)

const serialized = JsonObjectMapper.serialize(json, UserView).toString();

results:

{
    username: "annon",
    birthday: "1992-03-20",
    phone: "+0123456789"
}

Serilize(with topic)

const serialized = JsonObjectMapper.serialize(json, UserView, ['custom']).toString();

results:

{
    username: "annon",
    birthday: "1992-03-20"
}

Serilize(with topic)

const serialized = JsonObjectMapper.serialize(json, UserView, ['custom', 'custom2']).toString();

results:

{
    username: "annon",
    birthday: "1992-03-20",
    phone: "+0123456789"
}

Features

  • No-Initiation(Using only reference to class)
  • Renaming properties
  • Change data types
    • to Date
      • from String using Date.parse
      • from Integer using Date
    • to Integer
      • from String using Number
    • to Float
      • from String using Number
    • to Boolean
    • to String
    • to Object
  • Sub-Views(Recursivity)
    • Array sub-views
    • Single sub-view
  • Date values(String, Number, Date)
  • Serialize from Object Array
  • Serialize from Object
  • Serialize from String
  • Property Topic's

API:

JsonObjectMapper.serialize

This function always return Serialization object. And can using it with data as Array or Object.

Example
// from Array
JsonObjectMapper.serialize([
    {
        email: "john.smith@example.com",
        password: "123456"
    },
    {
        email: "john.smith@example.com",
        password: "123456"
    },
    {
        email: "john.smith@example.com",
        password: "123456"
    }
], UserView);

// from Object
JsonObjectMapper.serialize({
   email: "john.smith@example.com",
   password: "123456"
}, UserView);

Serialization

Serialization.toString(spaces:number = 4): string

This method return a string representation of object.

Serialization.toJson()

This method return a json object representation.