@lab900/typescript-serializer
Version:
JSON serialization/deserialization of Typescript objects
90 lines (67 loc) • 2.08 kB
Markdown
# Lab900 - Typescript Serializer
## How to
### Annotate classes for serialization
```typescript
import { Entity, JsonProperty } from '@lab900/typescript-serializer';
class MyEntity {
public exampleProp: string;
public exampleProp2: string[];
public exampleProp2: number;
/**
* A custom (de)serializer can be provided
*/
public nestedEntity: any;
/**
* Entities can be nested
*/
public nestedEntity: OtherEntity;
}
class OtherEntity {
public otherProp: string;
}
```
### Serialize & deserialize
```typescript
import { Entity, JsonProperty, serialize, deserialize } from '@lab900/typescript-serializer';
class MyEntity {
public exampleProp: string;
}
// coverts JSON to an instance of MyEntity
const deserializedEntity: MyEntity = deserialize({exampleProp: 'test'}, MyEntity);
// converts an instance of MyEntity to JSON
const serialized: Object = serialize(deserializedEntity, MyEntity);
```
### Angular service example:
```typescript
import { Serialize, SerializeParam, Deserialize } from '@lab900/typescript-serializer';
export class ExampleService {
private readonly apiUrl = 'http://example.com/api';
constructor(
private http: HttpClient,
) {}
// serialize all params with the SerializeParam decorator
// deserialize the response to ResponseEntity
public create(
toCreate: CreateEntity // serialize this param to CreateEntity before the method is applied
): Observable<ResponseEntity> {
return this.http.post<ApiResult<any>>(this.apiUrl, toCreate);
}
// deserialize the response to ResponseEntity
public getAll(): Observable<ResponseEntity[]> {
return this.http.get<ApiResult<any>>(this.apiUrl);
}
}
```