Angular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据

Posted

技术标签:

【中文标题】Angular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据【英文标题】:Angular 2+ : How to parse json data in Typescript component in Angular 【发布时间】:2018-10-02 18:20:46 【问题描述】:

我的 json 数据:


"Temp": [
    
        "dt": 1485717216,
        "temp":30,
        "time":"05:17:55 PM"
    
]

上面的json我可以解析-

ngOnInit() 
    this._weather.dailyForecast()
      .subscribe(mdata => 

        let temp1 = mdata['Temp'].map(mdata => mdata.temp)
        let time = mdata['Temp'].map(mdata => mdata.time)
    

但我在解析以下 json 数据时遇到问题-


        "temp":30,
        "time":"05:17:55 PM"

谁能告诉我如何解析json数据?

更新代码: 服务代码

export class WeatherService 

  constructor(private _http: HttpClient)  

  dailyForecast() 
    return this._http.get("----url----")
      .map(result => result);
  

【问题讨论】:

你有什么问题? 你在使用HttpClient模块吗? 你是使用http还是httpclient从服务器获取数据?如果您可以在 Angular 服务中发布代码,我可以为您提供更多帮助 我想绘制一个动态图 - 温度与时间,所以我得到了上述格式的数据,但在解析时会感到困惑 @RukshanDangalla 这是数组映射函数,不是可观察映射函数 【参考方案1】:

我认为 OP 在将响应作为对象而不是数组时遇到了问题。

您需要在使用自定义代码的情况下进行处理,并根据需要添加检查,

您还需要将 mdata 设置为 any 类型,因为它会有所不同。

在您的订阅中,

  .subscribe((mdata :any) => 
        if(mdata['Temp'])
        let temp1 = mdata['Temp'].map(mdata => mdata.temp)
        let time = mdata['Temp'].map(mdata => mdata.time)
        
        else
        
        let temp1 = mdata.temp;
        let time = mdata.time;
        
    

【讨论】:

mdata.temp 无法识别 编译时? 不,“对象”类型上不存在临时文件

以上是关于Angular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Angular cli 在 Angular 2 中导入电子

Angular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据

如何在 Angular 世界之外发生更改时更新 Angular 2 Reactive 表单字段

如何从 Angular 2 中的数据渲染静态 Angular 组件? [复制]

如何在 Angular 2 中集成 JWplayer

Angular 2 / Angular 4:如何从本地系统位置访问文件?