2015-01-07 129 views
1

我正在使用instagram API,如果標題不存在或沒有文本,它根本不包含節點。所以我包括一個檢查,看看是否存在標題工作,但如果標題存在和子節點文本不,然後我得到的錯誤:Uncaught TypeError: Cannot read property 'text' of nullJSON未捕獲類型錯誤

這是我的代碼:

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

如果標題爲空,則沒有標題? (但是一個標題屬性在這裏通知你沒有可用的標題),所以只有當標題屬性不爲空時,你才應該添加一個標題字符串 – Hacketo

回答

2

顯然,caption屬性存在,但它似乎是null某些情況下,當你評估(null).text,你所得到的錯誤在你的問題的詳細。

pictures[p].caption &&加入以評估您的if

這應該爲你工作(注意,我還合併你的兩個if S和我做了所有的評價只有一個if):

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

這似乎奏效了。你知道爲什麼這樣做,但不是我做到這一點嗎?爲什麼我在嵌套的if語句檢查中遇到錯誤,而不是這個呢? – shinjuo

+0

請注意,我做了一個小的重構,我合併了你的2個「ifs」,重點是我爲'pictures [p] .caption'添加了一個評估,如果這是'null',它將返回false爲if語句 – lante

0

你可以只嘗試:

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

因爲標題屬性總是他如果不可用,則可能爲空

+0

我做了,但可以有標題和沒有標題文字。不知道爲什麼但它發生。我檢查了JSON輸出 – shinjuo