Javascript-如果不存在json键,则捕获错误

时间:2019-03-03 19:51:52

标签: javascript node.js json error-handling

我正在尝试从API的json中捕获某个键不存在的错误,在本例中为imageLinks.thumbnail。

这是我到目前为止所写的内容,但仍然出现TypeError:无法读取未定义的属性'thumbnail'。

            let cover;
            if(results.imageLinks === undefined){

                let cover = "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";

            } else {
                let cover = results.imageLinks.thumbnail;
            };

我们将不胜感激。

欢呼

3 个答案:

答案 0 :(得分:0)

您可以使用IN运算符

if('imageLinks' in results)

答案 1 :(得分:0)

使用hasOwnProperty()

(function() {
  let cover;
  const result = {
    imageLinks: {}
  };
  if (!Object.hasOwnProperty.call(result, 'imageLinks')) {
    return;
  }
  if (Object.hasOwnProperty.call(result.imageLinks, 'thumbnail')) {
    cover = results.imageLinks.thumbnail;
  } else {
    cover = "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";
  }
  console.log(cover);
})();

答案 2 :(得分:0)

您的问题似乎有点模棱两可。
我将根据您对代码的了解尝试回答。
看来您有一个名为results的对象,该对象可能具有或不具有imageLinks属性。
因此,您需要检查“如果结果具有属性imageLinks,则将封面分配给results.imageLinks.thumbnail,否则,分配“ http://actar.com/wp-content/uploads/2015/12/nocover.jpg

let cover = results['imageLinks']['thumbnail'] ? results['imageLinks']['thumbnail'] : "http://actar.com/wp-content/uploads/2015/12/nocover.jpg";

请注意,我所寄的支票较全面。仅当对象的结构为{'results' : 'imageLinks': {'thumbnail' : 'some value'}}
时才会通过如果您只想检查'imageLinks',请用['imageLinks']['thumbnail']
替换结果results['imageLinks']
在JS中,您希望检查对象中的键,您可以直接编写if(results['imageLinks'])