我可以在angular2中返回原始json响应

时间:2016-10-19 15:56:31

标签: json angular jsonresponse

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

谢谢!

2 个答案:

答案 0 :(得分:3)

是的,你当然可以!!

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

res.json()

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

方法包括

  • res.text()
  • res.status
  • 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);

      }

答案 1 :(得分:0)

private jsonObj(res: Response) {
    return res.json() || {} ;
}