【问题标题】:React native: How to ignore a JSON object if it doesn't existReact native:如果 JSON 对象不存在,如何忽略它
【发布时间】:2017-12-08 22:03:48
【问题描述】:

我正在尝试从 Open Weathermap API 中获取数据,但出于某种原因,它是一个动态 API。

要获得每三个小时的降雨量,您必须前往:

json.list[0].rain['3h']

现在如果下雪,“雨”变成了

json.list[0].snow['3h']

我得到这样的代码:

return fetch(url)
    .then(res => res.json())
    .then(json => ({
        temp1: json.list[0].main.temp,
        tempmin1: json.list[0].main.temp_mix,
        tempmax1: json.list[0].main.temp_max,
        weather1: json.list[0].weather[0].main,
        time: json.list[0].dt_txt,
        name: json.city.name,
        rainmillimeter1: json.list[0].rain['3h'],
        snowmillimeter1: json.list[0].snow['3h'],
        wind1: json.list[0].wind['speed'],
        vochtigheid1: json.list[0].main['humidity'],
        luchtdruk1: json.list[0].main['pressure'],

但随后它会收到未处理的 Promise Rejection,并且不会加载任何 API。 如果它不存在,有没有办法让它忽略雨或雪?

谢谢!

【问题讨论】:

    标签: json react-native


    【解决方案1】:

    您可以使用三元运算符来检查其中一个对象是否不存在:

    rainmillimeter1: (json.list[0].rain) ? json.list[0].rain['3h'] : null,
    snowmillimeter1: (json.list[0].snow) ? json.list[0].snow['3h'] : null,
    

    另外,未处理的 Promise Rejection 通常是当一个 Promise 失败并且没有使用 .catch((e) => {}) 处理错误时。如果 API 在任何时候都无法访问,您可能应该考虑到这一点。

    更多详情:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 2021-09-24
      • 2020-11-20
      • 2016-05-09
      相关资源
      最近更新 更多