我有以下JSON。
{"results":
{"data": {
"id":"93cba9bd-2969-3214-b26f-7f42d20241a4",
"first_name":"PSU",
"last_name":"Bot",
"profile": {
"data":{"about":"i am so happy",}
}
}
}
现在我从API获取数据了。我想反序列化它,以便具有以下定义的模型:
export class Person extends BaseModel {
first_name: string;
last_name: string;
profile: DataType<Profile>;
}
没有数据元素会有个人资料属性。
如何构建通用DataType以便实现此目的?这是我到目前为止所拥有的。
export class DataType<T> {
public constructor(arg: T) {
console.log(arg);
return new arg.data;
}
}
此外,这是一个泛型类型区域还是一个对象(类),如上例所示?
答案 0 :(得分:0)
关于嵌套逻辑,你可以这样做。
export class DataType<T> {
public constructor(public data: T) {}
}
或者委托它。
export class DataType<T> {
public data: T;
public constructor(obj: {"data":T}) {
this.data = obj.data;
}
}
答案 1 :(得分:0)
假设您确定您的profile
属性或替换它的任何其他值将具有data
属性,您可以定义以下泛型类来建模响应的这一部分:
export class DataType<T extends { data: any }> {
public data: any;
public constructor(arg: T) {
this.data = arg.data;
}
public toJSON(): any {
return {
data: this.data,
};
}
}
请注意,toJSON
方法不是必需的,但如果您在此对象或封闭对象上调用JSON.stringify
,则非常有用。使用此方法,您可以根据需要操作输出。