4

angular2 是否可以返回原始 json 响应?前任。

零件

getrawJson(){
    this.someservice.searchJson()
    .subscribe( somelist => this.somelist = somelist,
                 error => this.errorMsg = <any>error);
}

为服务

    searchJson(num: number, somestring: string, somestring2: string): Observable<stringDataObj> {

        let body = JSON.stringify({"someJsonData"[{num, somestring, somestring2}]}); 
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });


        return this.http.post(URL, body, options)
                        .map(this.jsonObj)
                        .catch(this.handleError);

      }


private jsonObj(res: Response) {
    let body;
    return body{ };
}

上述实现返回 Array 。我有办法获取服务返回的原始 json 数据吗?我期待有如下的json响应

{“dataParam”:[{“num”:“08”,“somestring”:“2016-10-03”,“somestring2”:“2016-10-03”}],“someDatalist”:[{“one” :“08”,“二”:1,“三”:“2016-10-03”}]}

谢谢!

4

2 回答 2

3

是的,当然可以!

实际上 angualar2 以 Angular1.x 中的 promise 而不是 promise 的形式返回 Response Observable,因此为了将 observable 转换为原始 Json 格式,我们必须使用 angular2 的默认方法,即

res.json()

除了.json()angular 提供的方法之外,没有其他方法可以在此处描述以获取更多信息。

方法包括

  • res.text()
  • 资源状态
  • res.statusText 等

https://angular.io/docs/ts/latest/api/http/index/Response-class.html

更新

像这样使用你的代码

return this.http.post(URL, body, options)
                        .map(res => {return res.json()})
                        .catch(this.handleError);

      }
于 2016-10-19T17:35:18.937 回答
0
private jsonObj(res: Response) {
    return res.json() || {} ;
}
于 2016-10-19T17:25:12.050 回答