Tyson is a TypeScript serialization/deserialization library to convert objects to/from JSON.
toJson()
and fromJson()
methods for conversionsYou can install tyson
using npm:
npm install --save @hyperloris/tyson
The primary class to use is Tyson
which you can just create by calling new Tyson()
. There is also a class TysonBuilder
available that can be used to create a Tyson instance with various settings (e.g. register a custom type adapter).
There are three requirements to be met in order to make the library work properly:
tsconfig.json
file@JsonProperty
annotationundefined
)Let's start with a JSON representing a city:
{
"name": "Bologna",
"population": 388884,
"monuments": ["Piazza Maggiore", "Palazzo Re Enzo"],
"mayor": {
"full_name": "Virginio Merola",
"birthdate": "1955-02-14T00:00:00"
}
}
Now we need a couple of TypeScript classes:
export class User {
@JsonProperty("full_name")
name: string = undefined;
@JsonProperty({ type: Date })
birthdate: Date = undefined;
}
export class City {
@JsonProperty()
name: string = undefined;
@JsonProperty()
population: number = undefined;
@JsonProperty({ name: "monuments", type: [String] })
private _monuments: string[] = undefined;
@JsonProperty("mayor")
private _mayor: User = undefined;
}
At this point we are ready to use the library:
const tyson = new Tyson();
const city = tyson.fromJson(json, City);
const json = tyson.toJson(city);
Tyson API: generated with TypeDoc at every release.
The library is inspired by the Gson library.
MIT
Generated using TypeDoc
An annotation that indicates this property should be serialized/deserialized following the specified options.
Here is an example:
The following shows the output that is generated when serializing an instance of the above example class:
The following shows the result of the deserialization process: