Я использую API Google плюс API и получаю от него эти данные и получаю сообщение об ошибке при анализе данных JSON
и вот код, который я использую для синтаксического анализа этих данных и получения ошибки, поскольку объект данных проверен и отлично работает и хранит данные, как это показано в последних двух изображениях
var allIems = data.items;
for (var element in allIems) {
document.getElementById('datafromapi').innerHTML +=
(" , published time :" + element.published +
" , last updated time :" + element.updated +
", complete url : " + element.url
);
var obj = element.object.attachments;
document.getElementById('datafromapi').innerHTML +=
(+"\nattachments of post :\n" +
" type : " +
obj[0].objectType +
" ,displayName of content : " +
obj[0].displayName +
" ,content URL : " +
obj[0].url +
" ,content data :" +
obj[0].image.url +
" ,content type : " +
obj[0].image.type +
" ,content height : " +
obj[0].image.height +
" ,content width : " +
obj[0].image.width +
"\n\n\n");
}
});
я получил эту ошибку
Uncaught TypeError: Не удается прочитать свойства "вложения" неопределенного
значения element
в
for (var element in allIems) {
являются ключами allItems
, которые в этом случае являются индексами массива. Вы должны обратиться к фактическим элементам массива следующим образом:
var obj = allItems[element].object.attachments;
Ваш код element.object.attachments;
пытается получить доступ к object
свойства числа, которого не существует.
Поскольку мы знаем, что allItems
- это массив, вы могли бы написать:
for (var i = 0; i < allIems.length; i++) {
var obj = allItems[i].object.attachments;
Javascript имеет встроенный анализатор JSON, который вы можете использовать, который принимает строку данных и возвращает объект.
let jsonDataAsString = "{\"a\":1,\"b\":2}";
let jsonDataAsObject = JSON.parse(jsonDataAsString);
Затем вы можете проходить через данные как объект, ссылаясь на свойства с помощью точечной нотации
console.log(jsonDataAsObject.a); // 1
Чтобы быть в безопасности, вы должны сравнивать свойства с нулевым, прежде чем пытаться использовать
if(jsonDataAsObject.somePropery != null) {
// the property exists so you can access it here
}
element
содержат свойствоobject
.