【问题标题】:Grabbing JSON and mapping it to an object抓取 JSON 并将其映射到对象
【发布时间】:2018-08-01 14:27:17
【问题描述】:

我想知道如何从我在线托管的链接中获取 JSON 数据。我正在尝试在服务中获取 lat 和 lng 坐标,然后在我的组件中使用它们。

JSON 格式类似于:

"devices"{[ "lat": 1234567 "lon": 1234567 ]}

我正在尝试像这样映射 JSON 对象:

 private busFeed = 'azure.com/file.json';

  constructor(private _http: HttpClient) {}


   getFirstDevice() {
     return this._http.get(this.busFeed).pipe(
      map(data => data),
      tap(data => console.log('Device Info: ' + JSON.stringify(data)))
     );
   }

而我的 TransportComponent 是这样的:

this._transportFeed.getFirstDevice()
  .subscribe(transportFeed => {
    this.devices = transportFeed;
  });

我面临的问题是,当我只想要纬度和经度坐标时,这是从 JSON 文档中获取所有信息。我希望在 .ts 文件中而不是在 .html 文件中显示,因为我想在地图的地图标记中绘制这些坐标。

【问题讨论】:

标签: json angular rxjs ngrx angular-httpclient


【解决方案1】:
this._transportFeed.getFirstDevice()
   .subscribe(transportFeed => {
      this.devices = transportFeed.map(obj => ({
          lat: transportFeed.lat,
          lon: transportFeed.lon
     })
  });

getFirstDevice() {
 return this._http.get(this.busFeed).pipe(
  map(data => ({ lat: data.lat, lon: data.lon})),
  tap(data => console.log('Device Info: ' + 
  JSON.stringify(data)))
 );
  }

【讨论】:

  • 感谢您的快速回复!当我尝试这两种方法时收到的错误是:“对象”类型上不存在属性“lat”,“对象”类型上不存在属性“lon”。
  • this.devices 是什么类型的?尝试将其更改为“任何”
  • 我把它改成了 this.devices = { lat: transportFeed[0].lat, lon: transportFeed[0].lon };现在我有一个错误,无法读取未定义的属性 'lat'
猜你喜欢
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
相关资源
最近更新 更多