打字稿JSON对象转换成打字原稿类
问题描述:
你好我试图的JSON对象到一个打字原稿类以改变阵列。然而,每一次我尝试将Json对象属性分配给打字稿属性时,该方法似乎都会崩溃。打字稿JSON对象转换成打字原稿类
打字稿接口
export interface marker {
lat: number;
lng: number;
}
打字稿方法
public markers: marker[];
ngOnInit() {
this.mapService.GetPhotosById(this.id).subscribe(resultlisting => {
this.values = resultlisting;
console.log(this.values); //SHOW IN PICTURE
this.ChangetoMarkers(this.values);
}, error => this.errorMessage = error);
}
ChangetoMarkers(someArray: Observable<any[]>) {
for (let entry of someArray) {
let mark: marker;
mark.lat = Number(entry.latitude); //Attempt to convert to number
mark.lng = +entry.longitude; //2nd attempt to convert to number
this.markers.push(mark);
};
console.log(this.markers); //DOES NOT REACH THIS
}
地图服务
GetPhotosById(id: string): Observable<any> {
return this.http
.post(this.config.apiEndpoint + "mapPhotos/" + id)
.map(this.extractJson).catch(this.handleErrors);
};
private extractJson(res: Response) {
let data = res.json();
return data;
}
private handleErrors(error: Response | any) {
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.log(errMsg);
return Observable.throw(errMsg);
}
我研究这个问题,并试图以应用整数投,但它似乎没有不工作。任何建议都会很棒。
答
正如毛波佩在他的评论中指出的,您要访问的是没有值的变量的特性。
changeToMarkers(points: Array<{latitude: number, longitude: number}>) {
this.markers = entries.map(({latitude: lat, longitude: lng}) => ({
lat,
lng
}));
console.log(this.markers);
}
由于反序列化的纬度和经度表示已经是兼容的数值,所以不需要数字转换。
答
试试这个:
ChangetoMarkers(someArray: any[]) {
console.log("array",someArray);
for (let entry of someArray) {
let mark: marker = {lat: entry.latitude, lng: entry.longitude};
console.log("mark", mark);
this.markers.push(mark);
};
console.log("markers",this.markers);
}
它不像Aluan哈达德的优雅,但它应该让你决定此时它是打破如果由于某种原因,这仍然不能正常工作,伐木在循环之前有一些数组,标记被推之前,以及这个标记之后,以确定问题的确切位置。
这些都不是“JSON对象”,但JavaScript对象。抛出任何异常? – zerkms
你想分配属性没有值的变量,写'让标记:标记= {}',而不是 –
没有抛出异常出奇 – RyeGuy