Angular 将从服务器返回的对象转换为typescript对象

Angular 将从服务器返回的对象转换为typescript对象,angular,typescript,Angular,Typescript,我无法将从服务器返回的对象转换为我在typescript中创建的类 我的typescript对象与从服务器返回的对象具有所有相同的属性,唯一的区别是,我的typescript类中的属性名称采用驼峰大小写,其中从服务器返回的属性名称采用标题大小写,因此当我在我的typescript代码中访问类似userModel.isActive的内容时,它找不到该属性。下面是我从我的提供者发出的api调用的返回语句 return this.httpClient.post<UserModel>(url

我无法将从服务器返回的对象转换为我在typescript中创建的类

我的typescript对象与从服务器返回的对象具有所有相同的属性,唯一的区别是,我的typescript类中的属性名称采用驼峰大小写,其中从服务器返回的属性名称采用标题大小写,因此当我在我的typescript代码中访问类似userModel.isActive的内容时,它找不到该属性。下面是我从我的提供者发出的api调用的返回语句

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返回