自定义方法序列化
function serialize(obj) {
var str = JSON.stringify(obj);
return str;
}
function unserialize(str, theClass) {
var instance = new theClass();
var serializedObject = JSON.parse(str);
Object.assign(instance, serializedObject);
return instance;
}
// TEST CLASS
class TestClass {
constructor(a, b) {
this.a = a;
this.b = b;
}
sum() {
return this.a + this.b;
}
}
// USAGE
var instance = new TestClass(5, 7);
var str = serialize(instance);
console.log(str)
var retrievedInstance = unserialize(str, TestClass);
console.log(retrievedInstance)
console.log(retrievedInstance.sum());
引入第三方库序列化
cnpm install class-transformer --save
cnpm install reflect-metadata --save
cnpm install es6-shim --save
import { plainToClass, plainToClassFromExist, deserialize } from 'class-transformer';
let users = `[{
"id": 1,
"firstName": "Johny",
"lastName": "Cage",
"age": 27
},
{
"id": 2,
"firstName": "Ismoil",
"lastName": "Somoni",
"age": 50
}]`;
class User {
id: number;
firstName: string;
lastName: string;
age: number;
getName() {
return this.firstName + " " + this.lastName;
}
isAdult() {
return this.age > 36 && this.age < 60;
}
}
const realUsers = deserialize(User, users);
console.log(realUsers[0].getName()) // 结果 "Johny Cage"