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回应
{ &#34; dataParam&#34;:[{ &#34; num&#34;:&#34; 08&#34;, &#34; somestring&#34;:&#34; 2016-10-03&#34;, &#34; somestring2&#34;:&#34; 2016-10-03&#34; }], &#34; someDatalist&#34;:[{ &#34;一个&#34;:&#34; 08&#34;, &#34;两个&#34;:1, &#34;三&#34;:&#34; 2016-10-03&#34; }] }
谢谢!
答案 0 :(得分:3)
是的,你当然可以!!
实际上angualar2以Observable
的形式返回Response,而不是promise1.x中的promise,所以为了将observable转换为原始的Json格式,我们必须使用angular2的默认方法,即
res.json()
除角度提供的.json()
之外没有其他方法可以在此处描述以获取更多信息。
方法包括
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);
}
答案 1 :(得分:0)
private jsonObj(res: Response) {
return res.json() || {} ;
}