Angular 6将Json数据转换为对象

时间:2018-10-02 09:22:36

标签: javascript arrays json angular6

enter image description here

从服务器获取的数据采用这种格式,我希望它以对象的形式出现。

{
  "mappings": {
    "_doc": { 
      "properties": {
        "myProperty": { 
          "fields": {

          }
        }
      }
    }
  }
}

这是我如何从服务器获取数据。

public getOrder(): Observable < ORDERS > {
  return this._http.get < ORDERS > (`${this._apiBase}/charts/list/ORDERS/`);
}

3 个答案:

答案 0 :(得分:2)

这可能意味着您的服务未将http标头的 Content-Type 属性设置为 application / json

如果您拥有服务,则可以尝试设置响应的标头属性。 如果您无法更改它,则可以尝试使用const app = new Vue({ el: '#app', data: { message: 'Hello Vue!', item: { foo: 'test', }, }, //for test run, wait 3000ms mounted(){ setTimeout(function(){ this.item.foo = 'a'; }.bind(this),3000); }, watch: { 'item.foo': 'itemFooChanged' }, }, methods: { itemFooChanged (newVal, oldVal) { console.log(newVal); // running this.message='new Hello'; // this.message works } } }); 方法。

答案 1 :(得分:0)

这可以解决问题!

public getOrder(): Observable < ORDERS > {
  return this._http.get(`${this._apiBase}/charts/list/ORDERS/`).map((res) => <ORDERS>res.json())
}

答案 2 :(得分:0)

只需使用json方法转换您的响应即可。

public getOrder(): Observable < ORDERS > {
  return this._http.get(`${this._apiBase}/charts/list/ORDERS/`)
                   .map((res) =>res.results as ORDERS[] || [])
                   .catch((error:any) => Observable.throw(error.json().error));
}