javascript - 返回的 json 响应/javascript 中缺少属性

标签 javascript json reactjs

我正在使用 React 开发一些显示温度和降雨预报的天气小部件。我从 OpenWeather 获取数据,我的 json 响应如下所示:

//rainy day
0:{
  main: {
    temp:10}
  rain: {
    3h: 1000}
}
//sunny day
1:{
  main: {
    temp:10}
}

问题是 rain.3h 属性只有在它有一些数据时才会出现在返回的响应中,否则它会丢失。我的请求看起来像:

async getForecast(term) {
  const forecastUrl = "http://api.openweathermap.org/data/2.5/forecast?q=" + term + "&appid=" + apiKey + "&lang=us&units=metric&cnt=16";
  try {
    let response = await fetch(forecastUrl);
    if (response.ok) {
      let jsonResponse = await response.json();
      let forecast = jsonResponse.list.map(
        day => {
          return {
            temp: day.main.temp,
            rain: day.rain["3h"], // can't map missed property
          }
        }
      )
      return (forecast);
    }
  } catch (error) {
    console.log(error);
  }
}

我收到错误 类型错误:无法读取未定义的属性“3h”。 当响应中缺少该属性时,如何添加默认 rain:0

最佳答案

您可以使用三元运算符进行检查

 let forecast = jsonResponse.list.map(
        day => {
          return {
            temp: day.main.temp,
            rain: day.rain?day.rain["3h"] : ''
          }
        }
      )

关于javascript - 返回的 json 响应/javascript 中缺少属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46939262/

相关文章:

ReactJS、antd - 如何更改 'subMenu' 标题的样式( - 背景颜色)?

javascript - gulp browserify reactify 任务很慢

javascript - 使用 rangy 从多个 iframe 中抓取选定的文本?

javascript - 使用我的 HTML 时钟(-9 小时)格式化中国时间,同时保持非军事时间?

java - 将嵌套的 json 数据解析为字符串

json - 多部分表格 - 400 错误请求

json - 如何在 Postgresql 中将 JSONB 值转换为 bool 值?

reactjs - 使用 this.props.history.push ('/' 的用户注销重定向不会重定向到所需页面

javascript - 样式化组件 + typescript : "as" is not assignable to type IntrinsicAttributes

javascript - 保留前 6 个字母,其余部分显示为点 (...) JS String