[英]using map() to convert json data to an object
我有数据服务,它将假数据作为json返回(私有嘲笑数据函数)。 由于json数据结构与MyPerson对象匹配,因此我试图使用.map(res => res as MyPerson));
简单地将该json数据转换为MyPerson对象.map(res => res as MyPerson));
这是行不通的,因为我遇到错误,无法将数据转换为MyPerson对象。
我的问题是:如何使用map函数将此json数据映射到MyPerson对象?
@Injectable()
export class DataService {
person: MyPerson;
constructor(private http: Http) {
this.person = new MyPerson();
}
getData(): Observable<MyPerson> {
return Observable.from([this.mockData()]
.map(res => res as MyPerson)); /// ERROR?
}
private mockData() {
return {
"Id": 100,
"firstName": "John",
"lastName": "Conor",
"address": {
"postalAddress": {
"Streetline": "Long street",
"Suburb": "some suburb",
"City": "Boston",
"Province": "MA"
},
"residentialAddress": {
"Streetline": "Short street",
"Suburb": "my suburb",
"City": "New Jersey",
"Province": "N/A"
}
},
"Status": OK
}
};
}
export class MyPerson {
Id: number;
firstName: string;
lastName: string;
address: {
residentalAddress: Address;
postalAddress: Address;
}
}
export class Address {
public StreetAddress: string;
public Suburb: string;
public City: string;
public Province: string;
constructor(street: string, suburb: string, city: string, province: string){
this.StreetAddress = street;
this.Suburb = suburb;
this.City = city;
this.Province = province;
}
}
您在MyPerson
类的residentialAddress
中缺少i
,并且在模拟数据中使用StreetLine
而不是StreetAddress
。 固定在堆叠闪电战中
如果您定义私有嘲笑数据()的返回类型:MyPerson,它将告诉Typescript您知道并可以控制要返回的数据,而无需通过推断类型来弄清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.