Skip to content

Commit 53f6c09

Browse files
committed
so good 👍
1 parent 6ecdaa8 commit 53f6c09

22 files changed

+296
-50
lines changed

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
{
22
"name": "typescript-json-object-mapper",
3-
"version": "1.1.0",
3+
"version": "1.1.4",
44
"description": "Json Object mapper writing in TypeScript",
55
"main": "dist/index.js",
6-
"scripts": {},
6+
"typings": "dist/index.d.ts",
7+
"scripts": {
8+
"test": "mocha --compilers ts:ts-node/register ./tests/*.spec.ts"
9+
},
710
"repository": "git+https://github.com/olaferlandsen/Typescript-Json-Object-Mapper.git",
811
"author": "Olaf Erlandsen <olaftriskel@gmail.com>",
912
"license": "MIT",
@@ -41,6 +44,5 @@
4144
"tom",
4245
"tsom",
4346
"jsom"
44-
],
45-
"typings": "dist/index.d.ts"
47+
]
4648
}

src/core/JsonObjectMapper.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { JsonView } from './JsonView';
2+
declare class Serialization {
3+
private serialized;
4+
constructor(serialized: any);
5+
toString(space?: number): string;
6+
toJson(): object;
7+
}
8+
export declare class JsonObjectMapper {
9+
static serialize(data: any, view: typeof JsonView): Serialization;
10+
static serializeArray(dataArray: any[], view: typeof JsonView): Serialization;
11+
}
12+
export {};

src/core/JsonObjectMapper.js

Lines changed: 84 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/core/JsonObjectMapper.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/core/JsonObjectMapper.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { JsonView } from './JsonView';
22

33
class Serialization {
44
public constructor (private serialized: any) {}
5-
public toString (): string {
6-
return JSON.stringify(this.serialized);
5+
public toString (space = 4): string {
6+
return JSON.stringify(this.serialized, null, space);
77
}
88
public toJson (): object {
99
return this.serialized;
@@ -20,20 +20,33 @@ export class JsonObjectMapper {
2020
delete input[prop];
2121
continue;
2222
}
23+
console.log("property", prop, jsonProperties[prop].type, input[prop]);
2324
switch (jsonProperties[prop].type.toLowerCase()) {
2425
case 'date':
25-
if (typeof input[prop] === 'number') input[prop] = new Date(input[prop]);
26-
else if (typeof input[prop] === 'string') input[prop] = new Date(Date.parse(input[prop]));
27-
else if (input[prop] instanceof Date) continue;
26+
if (typeof input[prop] === 'number') {
27+
input[prop] = new Date(input[prop]);
28+
}
29+
else if (typeof input[prop] === 'string') {
30+
input[prop] = new Date(Date.parse(input[prop]));
31+
}
32+
else if (input[prop] instanceof Date) {
33+
continue;
34+
}
2835
else input[prop] = null;
2936
break;
30-
3137
case 'number':
32-
if (typeof input[prop] !== 'number') input[prop] = Number(input[prop]);
38+
if (typeof input[prop] !== 'number') {
39+
input[prop] = Number(input[prop]);
40+
}
3341
break;
34-
3542
case 'string':
36-
if (typeof input[prop] !== 'string') input[prop] = String(input[prop]);
43+
if (typeof input[prop] !== 'string') {
44+
input[prop] = String(input[prop]);
45+
}
46+
break;
47+
48+
case 'boolean':
49+
input[prop] = input[prop] === true || input[prop] > 0 || input[prop] !== false || typeof input[prop] !== 'undefined' || input[prop] !== null;
3750
break;
3851
}
3952
if (typeof jsonProperties[prop].view !== 'undefined' && jsonProperties[prop].view !== null) {
@@ -50,6 +63,12 @@ export class JsonObjectMapper {
5063
}
5164
else delete input[prop];
5265
}
66+
else if (jsonProperties[prop].view.prototype instanceof JsonView) {
67+
input[prop] = filter(jsonProperties[prop].view, input[prop]);
68+
}
69+
else {
70+
// input[prop] = null;
71+
}
5372
}
5473
}
5574
for (let prop in input) {

src/core/JsonView.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export declare abstract class JsonView {
2+
}

src/core/JsonView.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/core/JsonView.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/core/metadata/JsonIgnore.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export declare function JsonIgnore(target: any, propertyName: string, propertyDescriptor?: PropertyDescriptor): void;
2+
export declare function JsonIgnore(): Function;

src/core/metadata/JsonIgnore.js

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)