我使用Google plus API并从中获取此数据,并在解析此JSON数据时出错[/ p>]
这是我用来解析这些数据并在测试数据对象时得到错误的代码并且正常工作并保存过去2张图像中显示的数据
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");
}
});
我出现了错误
未捕获的TypeError:无法读取属性'附件'未定义的
答案 0 :(得分:1)
Javascript有一个内置的JSON解析器,你可以使用它接收一个数据字符串并返回一个对象。
let jsonDataAsString = "{\"a\":1,\"b\":2}";
let jsonDataAsObject = JSON.parse(jsonDataAsString);
然后,您可以将数据遍历为对象,使用点符号
引用属性console.log(jsonDataAsObject.a); // 1
为安全起见,在尝试使用
之前,应将属性与null进行比较if(jsonDataAsObject.somePropery != null) {
// the property exists so you can access it here
}
答案 1 :(得分:1)
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;