【问题标题】:Angular 2+ : How to parse json data in Typescript component in AngularAngular 2+:如何在 Angular 的 Typescript 组件中解析 json 数据
【发布时间】: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 这是数组映射函数,不是可观察映射函数

标签: json angular typescript components angular5


【解决方案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 无法识别
  • 编译时?
  • 不,“对象”类型上不存在临时文件
猜你喜欢
  • 1970-01-01
  • 2017-10-15
  • 2017-03-06
  • 2017-06-07
  • 2016-05-24
  • 2018-10-13
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多