Javascript JSON未捕获类型错误

Javascript JSON未捕获类型错误,javascript,json,Javascript,Json,我使用的是instagram API,如果标题不存在或没有文本,则根本不包括节点。因此,我包含了一个检查,以查看标题是否存在,但如果标题存在而子节点文本不存在,那么我会得到错误:uncaughttypeerror:cannotread属性'text'为null 这是我的代码: for (p in pictures) { if (pictures[p].hasOwnProperty('caption')) { if (pictures[p].caption.text != null)

我使用的是instagram API,如果标题不存在或没有文本,则根本不包括节点。因此,我包含了一个检查,以查看标题是否存在,但如果标题存在而子节点文本不存在,那么我会得到错误:
uncaughttypeerror:cannotread属性'text'为null

这是我的代码:

for (p in pictures) {
  if (pictures[p].hasOwnProperty('caption')) {
    if (pictures[p].caption.text != null) {
      captionString = pictures[p].caption.text;
    }
  }
}

显然,
caption
属性存在,但在某些情况下它似乎是
null
,当您计算
(null).text
时,您将得到问题中详细的错误

添加
pictures[p].caption&
以评估内部
if
中的
caption

这应该对您有用(请注意,我还合并了您的两个
if
s,并且我只在一个
if
中进行了所有评估):

你可以试试:

if(pictures[p].caption != null){
     captionString = pictures[p].caption.text;
}
而不是

if(pictures[p].hasOwnProperty('caption')){
     if(pictures[p].caption.text != null){
          captionString = pictures[p].caption.text;
     }
}

因为caption属性始终在此处,但如果不可用,则可能为null

如果caption为null,则没有标题?(但是这里有一个caption属性来通知您没有可用的caption),因此只有当caption属性不是null时,您才应该添加captionString,但是可以有一个caption而没有caption文本。不知道为什么,但它发生了。我检查了JSON输出,它似乎工作正常。你知道为什么这样做有效,但不是我做的方式吗?为什么我在嵌套if语句检查时出错,而不是在这一点上?请注意,我做了一些重构,并合并了您的2个“ifs”,重点是我为
图片[p]添加了一个求值。说明
,如果这是
null
,则if语句将返回false
if(pictures[p].hasOwnProperty('caption')){
     if(pictures[p].caption.text != null){
          captionString = pictures[p].caption.text;
     }
}