Angular 将从服务器返回的对象转换为typescript对象
我无法将从服务器返回的对象转换为我在typescript中创建的类 我的typescript对象与从服务器返回的对象具有所有相同的属性,唯一的区别是,我的typescript类中的属性名称采用驼峰大小写,其中从服务器返回的属性名称采用标题大小写,因此当我在我的typescript代码中访问类似userModel.isActive的内容时,它找不到该属性。下面是我从我的提供者发出的api调用的返回语句Angular 将从服务器返回的对象转换为typescript对象,angular,typescript,Angular,Typescript,我无法将从服务器返回的对象转换为我在typescript中创建的类 我的typescript对象与从服务器返回的对象具有所有相同的属性,唯一的区别是,我的typescript类中的属性名称采用驼峰大小写,其中从服务器返回的属性名称采用标题大小写,因此当我在我的typescript代码中访问类似userModel.isActive的内容时,它找不到该属性。下面是我从我的提供者发出的api调用的返回语句 return this.httpClient.post<UserModel>(url
return this.httpClient.post<UserModel>(url, { params: queryParams });
谁能给我指出正确的方向吗?提前谢谢
更新:似乎没有任何内置的东西可以满足我的需要,所以我要咬紧牙关,在我的typescript类中命名我的属性,就像从服务器返回的一样。谢谢大家的帮助。如果您的属性名称不同,您可能需要将
myTypeScriptModel
的每个属性分配给匹配的modeReturnedFromApi
属性您可以执行类似操作,将每个标题大小写属性复制到相应的大小写属性:
for (let p in modelReturnedFromApi)
myTypeScriptModel[p[0].toLowerCase() + p.substr(1)] = modelReturnedFromApi[p];
这只在下一层起作用。如果有嵌套的标题大小写对象需要转换为驼峰大小写,则需要一个递归函数。如果您自己解决这个问题有困难,请在问题中添加一个示例输入,我将更新答案。您可以创建一个与预期响应相关的模型类,并使用其构造函数将其转换为camelCase Person.ts
export class Person {
firstName: string;
lastName: string;
constructor(person){
this.firstName = person.Firstname;
this.lastName = person.Lastname;
}
}
export class AppComponent implements OnInit {
name = 'Angular';
person: Person;
// mocking response
response = {
'Firstname' : 'John',
'Lastname': 'Wick'
}
ngOnInit(){
// converting response into Person object
this.person = new Person(this.response);
}
}
应用程序组件.ts
export class Person {
firstName: string;
lastName: string;
constructor(person){
this.firstName = person.Firstname;
this.lastName = person.Lastname;
}
}
export class AppComponent implements OnInit {
name = 'Angular';
person: Person;
// mocking response
response = {
'Firstname' : 'John',
'Lastname': 'Wick'
}
ngOnInit(){
// converting response into Person object
this.person = new Person(this.response);
}
}
我以前遇到过这个问题,唯一的解决方法是将响应中的确切名称匹配起来。它们的名称相同-只是大小写不同,即:this.myTypeScriptModel.username model从API.username返回