2015-01-07 5 views
1

Я использую API-интерфейс instagram и если caption не существует или не имеет текста, он вообще не включает узел. Поэтому я включил проверку, чтобы увидеть, существует ли надпись, которая работает, но если заголовок существует, а текст дочернего узла - нет, тогда я получаю ошибку: Uncaught TypeError: Cannot read property 'text' of null.JSON Ошибка ввода строки

Это мой код:

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

если подпись не имеет значения, подпись отсутствует? (но свойство caption здесь, чтобы сообщить вам, что нет доступных надписей), поэтому вы должны добавить captionString только в том случае, если свойство caption не является нулевым. – Hacketo

ответ

2

Видимо, caption свойства существует, но это, кажется, null в некоторых случаях, и при оценке (null).text, вы получаете ошибку подробную в вашем вопросе.

Добавить pictures[p].caption && для оценки caption в вашем внутреннем if.

Это должно работать для вас (обратите внимание, что я также объединить свои два if с и я сделал все оценки только один 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; 
    } 
} 

Потому что собственность подписи всегда у него re, но может быть null, если недоступно

+0

Я сделал, но может быть подпись и текст подписи. Не знаю, почему, но это происходит. Я проверил вывод JSON – shinjuo

Смежные вопросы