2017-03-20 18 views
0

我正在使用angular2 typeScript从webservice.I获取json返回通过调用get可以从WebService获取值,但我无法获取JSON组件。例如,我想要获取返回的JSON的状态。我可以得到整个JSON,但不是JSON的确切状态。 您可以看到下面webservice返回的示例代码和JSON。如何获取JSON字符串的组件通过webservice请求返回

问候 的Alper

示例代码:

this.http.get(this.webServiceUrlGet) 
    .subscribe(
    function (data) { 
     this.tradeShows = JSON.stringify(data); 
     console.log(this.tradeShows); 

    }, 
    error => this.errorMessage = <any>error); 

    JSON : 
    "_body":"{\n \"args\": {}, \n \"headers\": {\n \"Accept\":  \"application/json, text/plain, */*\", \n \"Accept-Encoding\": \"gzip, deflate, sdch, br\", \n \"Accept-Language\": \"tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4\", \n \"Connect-Time\": \"0\", \n \"Connection\": \"close\", \n \"Host\": \"httpbin.org\", \n \"Origin\": \"http://localhost:3000\", \n \"Referer\": \"http://localhost:3000/navigation\", \n \"Total-Route-Time\": \"0\", \n \"User-Agent\": \"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36\", \n \"Via\": \"1.1 vegur\", \n \"X-Request-Id\": \"db6c93bd-99dd-4410-a709-5bc2dd4150fb\"\n }, \n \"origin\": \"212.175.18.38\", \n \"url\": \"https://httpbin.org/get\"\n}\n","status":200,"ok":true,"statusText":"OK","headers":{"Content-Type":["application/json"]},"type":2,"url":"https://httpbin.org/get"} 
+0

你为什么不使用'的console.log(this.tradeShows.status);' –

+0

我之前尝试过,但它告诉我undefined sachilla。 – user2307786

+1

你需要'JSON.parse(response)'.i.e。 '数据'在你的情况下 –

回答

1

只是这样做:

this.tradeShows = data.json();

你从一个HTTP调用回来时,你订阅的对象是Response对象,它具有对HTTP的所有方面的信息调用包括标题,正文等.json()方法自动获取正文字段并将其转换为可以使用的对象。

顺便说一下,JSON.stringify()接受一个对象并将其转换为一个字符串。如果你打算做手动JSON解析,你需要使用JSON.parse()

如果你想要得到的HTTP状态代码发送回您可以访问的响应的状态属性:data.status

+0

他也希望根据我所了解的http状态。 – n00dl3

+0

谢谢Jesse.As你告诉我data.json()。userId解决了我的问题。干杯 – user2307786

+0

np,我很高兴它有帮助 –

-1

在使用打字稿你需要映射值和订阅它的组件页面例如

服务调用API

import { Http, Response, Headers, RequestOptions, URLSearchParams } from "@angular/http"; 
constructor(
     private authHttp: Http) {} 
let url= `this.webServiceUrlGet`; 
     let params = new URLSearchParams; 
     params.append('id', id); 
    return this.authHttp.post(url, { headers:headers, search:params }) 
    .map(res => res.json()); 

组件

this.service.get(this.id) 
       .subscribe(
       res => this.item= res, 
       error => this.errorMessage = error 
       ); 
+0

这与打字稿无关,但与角色“Http”服务无关。为什么用反引号包围'this.webServiceUrlGet'?为什么不使用OP代码作为基础(即:'Http'而不是'authHttp'服务)? – n00dl3

+0

这是我从httpshttp –

+0

分配的'authHttp'对象Hello Venkateswaran我需要typeScript bro – user2307786

1

如果你想要得到的状态的JSON,你可以这样做:

this.http.get(this.webServiceUrlGet) 
    .map(resp=>[resp.status,resp.json()]) 
    .subscribe(([status,data]) => { 
     this.tradeShows = data; 
     this.status = status; 
     console.log(this.tradeShows,this.status); 
    }, 
    error => this.errorMessage = <any>error); 

需要调用resp.json()因为什么是由HTTP服务发送的一个Response object

+1

为什么你会将结果串联起来? –

+0

这是来自OP的人工制品,我删除了 – n00dl3

相关问题