将JSON对象转换为Typescript类的Typescript

时间:2017-04-24 00:35:28

标签: json angular typescript

您好我正在尝试将JSON对象数组更改为TypeScript类。但是,每次尝试将Json对象属性分配给typescript属性时,该方法似乎都会崩溃。

Typescript接口

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);
}

我已经研究了这个问题,并试图应用整数演员,但它似乎没有用。任何建议都会很棒。

2 个答案:

答案 0 :(得分:2)

正如Mauricio Poppe在评论中指出的那样,您正在尝试访问没有价值的变量的属性。

changeToMarkers(points: Array<{latitude: number, longitude: number}>) {
  this.markers = entries.map(({latitude: lat, longitude: lng}) => ({
    lat,
    lng
  }));

  console.log(this.markers);
}

不需要进行数字转换,因为纬度和经度的反序列化表示已经是兼容的数值。

答案 1 :(得分:1)

试试这个:

#! /bin/sh
exec '/usr/bin/bison' -y "$@"

它不像Aluan Haddad那样优雅,但它应该允许你通过记录someArray之前的某些原因确定它在哪个点上断了。循环,推动之前的标记,以及此标记后确定问题的确切位置。