JSON 失败并继续执行代码

JSON fail and continue code

本文关键字:执行 代码 继续 失败 JSON      更新时间:2023-09-26

我正在从外部网站中提取json。我在解析时从他们的 JSON 中获取一个带有此代码的字符串:

breweryName = data.data[i].breweries[0].name;

问题是我收到的 JSON 中的一个条目没有啤酒厂 [0].name 的值。

如何继续执行代码?尽管有一个糟糕的条目?我试过这个:

if(data.data[i].breweries[0].name === "undefined"){
   breweryName = "N/A"
}
else{
   breweryName = data.data[i].breweries[0].name;
}

那仍然失败

首先通过检查 size 属性来检查给定索引i是否有breweries,以及是否存在嵌套元素;在内部循环中,它使用 typeof() 检查 name 属性:

if(
   typeof(data.data[i].breweries) !== 'undefined' &&
   data.data[i].breweries.size > 0
){
      /* traverse the individual entries */
      data.data[i].breweries.forEach(function(v, i){
         if(typeof(v.name) !== 'undefined'){
            /* the element has a name property */
         } else {
            /* name property is absent */
         }
      });
}

下次请提供一些示例数据,以便于回答。

因为它可能是数组或对象...这需要不同的治疗。

在 JavaScript 中,使用 typeof 函数

if (typeof data.data[i].breweries === "undefined" ||
  typeof data.data[i].breweries[0] === "undefined" ||
  typeof data.data[i].breweries[0].name === "undefined") 

您可能还想包括

if (data.data[i].breweries[0].name.trim() === "")

以检查存在但为空的名称。

捷径方法也可能有效...

breweryName = data.data[i].breweries[0].name || "N/A"