假设我有一个对象:
class Person{
id: number;
name: string;
}
来自API的Json:
{
"id": "10",
"name": "Person Name",
"email": "per@ho.com"
}
如何将JSON转换为Person对象,是Person类中的激动变量?
我试过了:
Object.assign(Person.prototype, this.jsonList))
但我没有工作
答案 0 :(得分:1)
有关在类中声明属性的信息是" metadata",并且无法直接访问。因此,没有直接的方法可以从某些输入中复制类中存在的属性,这些输入可能包含其他不需要的属性,而不是显式枚举它们。
可以访问此类元数据的JavaScript / TypeScript功能是装饰器。因此,以一般化的方式解决您的问题需要这样的装饰器。装饰器可以生成一个静态方法,它只复制那些实际存在于类中的属性。那看起来像那样:
@ConstructFromJsonWithExtraGarbage()
class Person {
}
const sally = Person.constructWithExtraGarbage(
{id: 1, name: "Sally", email: "sally@mail.com"});
实际上写这个装饰器超出了这个答案的范围。