JSON失败并继续代码

时间:2016-02-27 04:17:50

标签: javascript json

我从外部网站拉json。当我解析它时,我从他们的JSON中获取了一个包含此代码的字符串:

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

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

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

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

}

仍然失败

2 个答案:

答案 0 :(得分:0)

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

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 */
         }
      });
}

下次请提供一些示例数据,这样可以更轻松地回答。

因为它可能是数组或对象......需要不同的处理。

答案 1 :(得分:-1)

在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"