当前位置: 代码迷 >> JavaScript >> Javascript-如果不存在json键,则捕获错误
  详细解决方案

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

热度:41   发布时间:2023-06-06 09:32:05.0

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

这是我到目前为止编写的内容,但仍然出现TypeError:无法读取未定义的属性“缩略图”。

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

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

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

帮助将不胜感激。

干杯

您可以使用运算子

if('imageLinks' in results)

使用

 (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); })(); 

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

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'])