在我的TypeScript代码中,我有两个类ClassA
和ClassB
export class ClassA {
name: string;
classB: ClassB;
getName(): string {
return this.name;
}
}
export class ClassB {
name: string;
getName(): string {
return this.name;
}
}
我尝试将Json解析为如下所示的ClassA
实例:
let classA: ClassA = Object.assign(new ClassA(), JSON.parse('{"name":"classA", "classB": {"name":"classB"}}'));
但是只有ClassA
是实例化的,而classB属性中没有实例化。
当我记录对象时,我有以下结果:
console.log(classA); // ClassA {name: "classA", classB: Object}
console.log(classA.getName()); // classA
console.log(classA.classB); // Object {name: "classB"}
console.log(classA.classB.getName()); // EXCEPTION: classA.classB.getName is not a function
这有可能深入剖析Json吗?
发布于 2017-08-25 08:22:46
到目前为止,我发现最好的方法是:
export class ClassA {
name: string;
classB: ClassB;
constructor(json: any) {
this.name = json.name;
if (json.classB !== undefined && json.classB !== null) {
this.classB = new ClassB(json.classB);
}
}
}
export class ClassB {
name: string;
constructor(json: any) {
this.name = json.name;
}
}
发布于 2017-03-20 16:49:58
你需要这样做:
export interface ClassBData {
name: string;
}
export interface ClassAData {
name: string;
classB: ClassBData;
}
export class ClassA {
name: string;
classB: ClassB;
constructor(json: ClassAData) {
this.name = json.name;
this.classB = Object.assign(new ClassB(), json.classB);
}
getName(): string {
return this.name;
}
}
或者您也可以以同样的方式实例化ClassB
:
export class ClassB {
name: string;
constructor(json: ClassBData) {
this.name = json.name;
}
getName(): string {
return this.name;
}
}
https://stackoverflow.com/questions/42909258
复制相似问题