React native:如果JSON对象不存在,如何忽略它

时间:2017-12-08 22:03:49

标签: json react-native

我试图从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'],

但是它会得到一个未处理的承诺拒绝,并且不会加载任何API。 如果它不存在,有没有办法让它忽略下雨或下雪?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

此外,未处理的承诺拒绝通常是在承诺失败且使用.catch((e) => {})时没有错误处理的情况下。您可能应该考虑的因素,无论何时无法访问API。

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